我正在为我的基础设施的terraform配置模块工作。 我的结构如下所示,
terra1
|
|---terra1.tf
main.tf
module "terra_module" {
source = "./terra1/"
}
variable "PW" {}
output "data" {
value = "${var.PW}"
}
terra1.tf
在子目录中,它包含我的模块代码。当我通过main.tf
文件调用它时,它给了我变量错误。
##Command
TF_VAR_PW=bar terraform apply
顺便说一句, 如果我在自己的目录上运行terra1,则不会出现任何错误。
问题:通过模块使用环境变量,而不在每次调用中分配它(!! from模块!!)
我该如何解决这个问题?
谢谢。
答案 0 :(得分: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
答案 1 :(得分:0)
我认为您缺少从模块发送varialbe的功能。您可以将main.tf更改为:
module "terra_module" {
source = "./terra1/"
PW = "someValue"
}