Spec-Zone.ru › OpenTofu 1.12

Команда: output

Команда tofu output используется для извлечения значения выходной переменной из файла состояния.

Использование​

Использование: tofu output [options] [NAME]

Если дополнительные аргументы не указаны, output отобразит все выходные значения корневого модуля. Если указано выходное значение NAME, будет выведено только его значение.

Примечание

Использование переменных в конфигурации бэкенда или блоке шифрования требует задания значений переменных корневого модуля при запуске tofu output.

Все флаги командной строки необязательны. Доступны следующие флаги:

  • -json — если указан, выходные значения форматируются как объект JSON с отдельным ключом для каждого выходного значения. Если указан NAME, возвращается только указанное выходное значение. Результат можно передать таким инструментам, как jq, для дальнейшей обработки.

  • -json-into=out.json — выводит те же данные, что и -json, но записывает их в файл. Это позволяет одновременно сохранять журналы в формате, удобном для чтения человеком и для машинной обработки.

  • -raw — если указан, OpenTofu преобразует указанное выходное значение в строку и выведет ее напрямую, без специального форматирования. Это может быть удобно при работе со сценариями оболочки, но поддерживаются только значения типа string, number и boolean. Для обработки сложных типов данных используйте -json.

    Предупреждение

    В этом режиме результат записывается в stdout без кавычек и экранирования. Поэтому не следует использовать этот режим, если stdout направлен в терминал, а значение вывода потенциально может контролироваться злоумышленником: строка может содержать управляющие последовательности, способные вызвать нежелательное поведение терминала.

  • -no-color — если указан, вывод не будет содержать цветовых кодов. Этот параметр не действует при использовании -raw со значением вывода, которое само содержит встроенные управляющие последовательности.

  • -state=path — путь к файлу состояния. По умолчанию используется "terraform.tfstate". Игнорируется при использовании удаленного состояния.

  • -var 'NAME=VALUE' — задает значение одной входной переменной, объявленной в корневом модуле конфигурации. Используйте этот параметр несколько раз, чтобы задать более одной переменной. Дополнительные сведения см. в разделе Входные переменные в командной строке.

  • -var-file=FILENAME — задает значения для любого количества входных переменных, объявленных в корневом модуле конфигурации, используя определения из файла "tfvars". Используйте этот параметр несколько раз, чтобы включить значения из нескольких файлов.

  • -show-sensitive — если указан, конфиденциальные значения будут отображаться.

Помимо параметров -var и -var-file, существуют и другие способы задать значения входных переменных в корневом модуле. Дополнительные сведения см. в разделе Задание значений переменных корневого модуля.

Примечание

При использовании флага командной строки -json или -raw конфиденциальные значения в состоянии OpenTofu будут отображаться в открытом виде. Дополнительные сведения см. в разделе Конфиденциальные данные в состоянии.

Примеры​

В этих примерах предполагается наличие следующего фрагмента выходных данных OpenTofu.

Блок кода
output "instance_ips" {
  value = aws_instance.web.*.public_ip
}

output "lb_address" {
  value = aws_alb.web.public_dns
}

output "password" {
  sensitive = true
  value = var.secret_password
}

Чтобы вывести список всех выходных значений:

Блок кода
$ tofu output
instance_ips = [
  "54.43.114.12",
  "52.122.13.4",
  "52.4.116.53"
]
lb_address = "my-app-alb-1657023003.us-east-1.elb.amazonaws.com"
password = <sensitive>

Обратите внимание: выходные значения с атрибутом sensitive будут скрыты:

Блок кода
$ tofu output password
password = <sensitive>

Чтобы получить DNS-адрес балансировщика нагрузки:

Блок кода
$ tofu output lb_address
"my-app-alb-1657023003.us-east-1.elb.amazonaws.com"

Чтобы получить IP-адреса всех экземпляров:

Блок кода
$ tofu output instance_ips
instance_ips = [
  "54.43.114.12",
  "52.122.13.4",
  "52.4.116.53"
]

Использование в автоматизации​

По умолчанию команда tofu output выводит данные в удобном для чтения формате, который может со временем изменяться для повышения ясности.

Для создания сценариев и автоматизации используйте -json, чтобы получить стабильный формат JSON. Вы можете обработать вывод с помощью анализатора JSON для командной строки, например jq:

Блок кода
$ tofu output -json instance_ips | jq -r '.[0]'
54.43.114.12

В распространенном случае, когда строковое значение напрямую используется в сценарии оболочки, можно вместо этого применить -raw: строка будет выведена напрямую, без дополнительного экранирования и пробельных символов.

Блок кода
$ tofu output -raw lb_address
my-app-alb-1657023003.us-east-1.elb.amazonaws.com

Параметр -raw работает только со значениями, которые OpenTofu может автоматически преобразовать в строки. Для работы со значениями сложных типов, например объектами, используйте -json, при необходимости вместе с jq.

Строки OpenTofu представляют собой последовательности символов Unicode, а не необработанные байты, поэтому вывод -raw будет закодирован в UTF-8, если он содержит символы, отличные от ASCII. Если нужна другая кодировка символов, используйте отдельную команду, например iconv, для преобразования кодировки необработанного вывода OpenTofu.

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.12/cli/commands/output/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API