У пользователя Terraform TF_VAR не работает вложенный модуль - PullRequest
0 голосов
/ 14 января 2019

Я работаю для модулей обеспечения terraform для моей инфраструктуры. Моя структура показана ниже:

terra1
|
|---terra1.tf

main.tf

main.tf

 module "terra_module" {
   source = "./terra1/"

  }

terra1.tf

variable "PW" {}

output "data"  {
     value = "${var.PW}"
}

terra1.tf находится в дочернем каталоге и содержит мои коды модулей. Когда я вызываю его через main.tf файл, он выдаёт мне переменную ошибку.

 ##Command
 TF_VAR_PW=bar terraform apply

Кстати, Если я запускаю terra1 в своем собственном каталоге, я не получаю никакой ошибки.

Проблема: использовать переменную окружения через модуль, не назначая ее при каждом вызове (!! из модуля !!)

Как я могу решить эту проблему ??

Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Я думаю, вам не хватает отправить varialbe из модуля. Вы можете изменить ваш main.tf как:

module "terra_module" {
   source = "./terra1/"
   PW     = "someValue"
  }
0 голосов
/ 14 января 2019

В ваших модулях он не может знать переменные окружения, которые вы пытаетесь сделать с помощью TF_VAR_XXX. Вы должны построить мост, чтобы перенести его.

Вот исправление

variable "PW" {}

module "terra_module" {
  source = "./terra1/"

  PW = "${var.PW}"
}

Я знал, что это какая-то раздражающая работа по копированию / вставке, но это так terraform работает

Если вы хотите получить выходные данные из этого модуля, вам нужно добавить еще один output (перенести его обратно)

Таким образом, полный main.tf становится:

variable "PW" {}

module "terra_module" {
  source = "./terra1/"

  PW = "${var.PW}"
}

output "data" {
  value = "${module.terra_module.data}"
}

Тогда вы получите:

$ TF_VAR_PW=bar terraform apply

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

data = bar
...