Короткий ответ
output возвращает значения атрибутов ресурсов после apply (например, IP адрес, ARN, URL) для использования человеком, CI/CD-пайплайном или другим модулем/конфигурацией; посмотреть их повторно можно командой terraform output без необходимости что-либо применять заново.
Как это работает подробнее
значения outputs сохраняются в state вместе с ресурсами; terraform output просто читает их оттуда, а terraform output -json отдаёт их в машиночитаемом формате для скриптов.
Пример кода
main.tf
output "db_endpoint" {
value = aws_db_instance.main.endpoint
sensitive = true
}
$ terraform output db_endpoint
"<sensitive>"
$ terraform output -json db_endpoint
"mydb.abc123.eu-west-1.rds.amazonaws.com:5432"Что использовать на практике
- Практика. outputs часто используют для передачи данных между слоями инфраструктуры (например, сетевой модуль выводит
vpc_id, а конфигурация приложения читает его черезterraform_remote_statedata source или напрямую как output родительского модуля); в CI/CD output с адресом балансировщика можно подставить в smoke-тест после деплоя.
Подводные камни
- Ошибка. пытаться получить output до первого успешного apply (значения просто отсутствуют в state); выводить чувствительные данные (пароли) в output без флага
sensitive = true, из-за чего они светятся в логах CI/CD в открытом виде.