Команда: output
Команда tofu output используется для извлечения значения выходной переменной из файла состояния.
Использование
Использование: tofu output [options] [NAME]
Если дополнительные аргументы не указаны, output отобразит все выходные значения корневого модуля. Если указано выходное значение NAME, будет выведено только его значение.
Использование переменных в конфигурации бэкенда или блоке шифрования требует назначения значений переменным корневого модуля при запуске tofu output.
Все флаги командной строки являются необязательными. Доступны следующие флаги:
-
-json— если указан, выходные значения форматируются как объект JSON с отдельным ключом для каждого значения. Если указанNAME, возвращается только указанное выходное значение. Результат можно передать в такие инструменты, какjq, для дальнейшей обработки. -
-raw— если указан, OpenTofu преобразует указанное выходное значение в строку и выводит ее напрямую, без специального форматирования. Это удобно при работе со сценариями оболочки, но поддерживаются только строковые, числовые и логические значения. Для обработки сложных типов данных используйте вместо него-json. -
-no-color— если указан, вывод не будет содержать цветов. -
-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.9/cli/commands/output/