地形用户TF_VAR嵌套模块不起作用



我正在为我的基础设施开发地形配置模块。我的结构如下所示,

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,我没有收到任何错误.

问题:通过模块使用环境变量,而无需在每次调用中分配它(!!从模块!!)

我该如何解决这个问题?

谢谢。

在你的模块中,它无法知道你试图通过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

我认为您缺少从模块发送变体。Yo 可以将您的 main.tf 更改为:

module "terra_module" {
   source = "./terra1/"
   PW     = "someValue"
  }

最新更新