Не удается получить выходные данные, когда запущен вывод terraform - PullRequest
0 голосов
/ 04 мая 2020

Я использую модули. И это структура моих файлов - Provisioner и модуль - это разные папки. Файл main.tf в стеке вызывает модули.

  > provisioner 
        >stack
           |--main.tf
           |--variables.tf
  > module (folder)  
    |--aks
    |     |--main.tf
    |     |--outputs.tf
    |     |--variables.tf
    |
    |--postgresql
    |     |--main.tf
    |     |--outputs.tf
    |     |--variables.tf

Когда я запускаю команду terraform apply в каталоге provsioner, он как ожидается, вернет выходные данные после завершения применения. Я не получаю выходы. Когда я запускаю 'terraform output', я получаю- ' В файле состояния либо не определены выходные данные, либо все определенные выходные данные пусты. Пожалуйста, определите выход в вашей конфигурации с ключевым словом output и запустите terraform refre sh для он станет доступным. Если вы используете интерполяцию, убедитесь, что интерполированное значение не пустое"

Я хотел бы знать, почему это происходит?

Ответы [ 2 ]

2 голосов
/ 04 мая 2020

Выходные переменные модулей не будут распечатаны по умолчанию. Вы должны явно определить выходные переменные в вашем provisioner dir.

2 голосов
/ 04 мая 2020

Terraform 0.12 и более поздние версии намеренно отслеживают только состояния модуля root в состоянии. Чтобы выставить выходы модуля для внешнего потребления, вы должны экспортировать их из модуля root, используя выходной блок, что теперь можно с 0,12 сделать для одного модуля, все в одном выходе, например:

output "example_module" {
value = module.example_module
}

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

Выпуск Github: https://github.com/hashicorp/terraform/issues/22126

...