У пользователя Terraform 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 в своем собственном каталоге, я не получаю никакой ошибки.
Проблема: использовать переменную окружения через модуль, не назначая ее при каждом вызове (!! из модуля!!)
Как я могу решить эту проблему??
Благодарю.
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
Я думаю, что вам не хватает отправить varialbe из модуля. Вы можете изменить ваш main.tf как:
module "terra_module" {
source = "./terra1/"
PW = "someValue"
}