Terraform User TF_VAR не работает вложенный модуль

Я работаю над модулями подготовки 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 в его собственном каталоге, я не получил никакой ошибки.

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

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

Спасибо .


person ColossusMark1    schedule 14.01.2019    source источник


Ответы (2)


В ваших модулях он не может знать переменные среды, которые вы пытаетесь выполнить через 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
person BMW    schedule 14.01.2019

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

module "terra_module" {
   source = "./terra1/"
   PW     = "someValue"
  }
person Deependra Dangal    schedule 14.01.2019
comment
неправильный ответ, заказчик просит получить значение переменной из TF_VAR_xxxx. Если ваш код жестко закодирует значение, это никогда не сработает, - person BMW; 15.01.2019