Команда: 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 представляют собой последовательности символов Юникода, а не необработанные байты, поэтому вывод -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.10/cli/commands/output/