0

我正在为我的基础设施开发一个 terraform 配置模块。我的结构如下图所示,

terra1
|
|---terra1.tf

main.tf

主文件

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

  }

terra1.tf

variable "PW" {}

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

terra1.tf在子目录中,它包含我的模块代码。当我通过main.tf文件调用它时,它会给我变量 error 。

 ##Command
 TF_VAR_PW=bar terraform apply

顺便说一句,如果我在它自己的目录上运行 terra1 ,我没有收到任何错误。

问题:通过模块使用环境变量而不在每次调用中分配它(!!来自模块!!)

我怎么解决这个问题 ??

谢谢 。

4

2 回答 2

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
于 2019-01-14T00:45:38.347 回答
0

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

module "terra_module" {
   source = "./terra1/"
   PW     = "someValue"
  }
于 2019-01-14T02:31:54.560 回答