Terraform 有条件地使用 AWS SecurityGroups
Terraform use conditional for AWS SecurityGroups
是否可以像这样将 Terraform 与 AWS 安全组一起使用:
securitygroup= ["${substr(terraform.workspace) == "PD" ? module1 : module2}"]
仅当 terraform.workspace 以 "PD" 开头时,我们才想创建和附加基于模块 1 的安全组,如果不需要,我们不想创建模块 2 中定义的安全组。
我们已经尝试过了,问题是如果模块 2 的安全组尚未创建,Terraform 不会分配模块 1 构建的安全组。一旦我们创建了这两个资源,它就可以识别并附加 module1,但是我们正在复制安全组的数量。
看起来 Terraform 需要在其条件中激活和创建资源?
提前致谢!
TF 有一个已知错误,其中插值会评估条件的两个分支(这就是为什么只有在创建了两个安全组时它才有效):
https://github.com/hashicorp/terraform/issues/15605
我 运行 在不同的实现中遇到了同样的问题 - 目前正在尝试使用上面 link 中第二条评论的建议作为解决方法:
This is a known issue with Terraform. The main workaround so far seems to be to find something to put in each branch that will run without error.
For example in what you describe you may be able to do something like this:
"${truthtest ? file("${truthtest ? var.file_path : "/dev/null"}") : ""}
Or since file("/dev/null") should equal "" just:
file("${truthtest ? var.file_path : "/dev/null"}")
是否可以像这样将 Terraform 与 AWS 安全组一起使用:
securitygroup= ["${substr(terraform.workspace) == "PD" ? module1 : module2}"]
仅当 terraform.workspace 以 "PD" 开头时,我们才想创建和附加基于模块 1 的安全组,如果不需要,我们不想创建模块 2 中定义的安全组。
我们已经尝试过了,问题是如果模块 2 的安全组尚未创建,Terraform 不会分配模块 1 构建的安全组。一旦我们创建了这两个资源,它就可以识别并附加 module1,但是我们正在复制安全组的数量。
看起来 Terraform 需要在其条件中激活和创建资源?
提前致谢!
TF 有一个已知错误,其中插值会评估条件的两个分支(这就是为什么只有在创建了两个安全组时它才有效):
https://github.com/hashicorp/terraform/issues/15605
我 运行 在不同的实现中遇到了同样的问题 - 目前正在尝试使用上面 link 中第二条评论的建议作为解决方法:
This is a known issue with Terraform. The main workaround so far seems to be to find something to put in each branch that will run without error.
For example in what you describe you may be able to do something like this:
"${truthtest ? file("${truthtest ? var.file_path : "/dev/null"}") : ""}
Or since file("/dev/null") should equal "" just:
file("${truthtest ? var.file_path : "/dev/null"}")