Terraform对AWS SecurityGroups使用条件

时间:2018-03-08 11:17:45

标签: amazon-web-services terraform

是否可以将Terraform条件与AWS安全组一起使用,如下所示:

securitygroup= ["${substr(terraform.workspace) == "PD" ? module1 : module2}"]

我们只想在terraform.workspace以“PD”开头的情况下创建并附加基于module1的安全组,如果不需要,我们不想创建在module2中定义的安全组。

我们已经尝试过这个问题,如果尚未创建module2的安全组,则Terraform不会分配module1构建的安全组。一旦我们创建了两个资源,它就会识别并附加module1,但是我们正在重复安全组的数量。

看起来Terraform需要资源活动并在其条件中创建?

提前致谢!

1 个答案:

答案 0 :(得分:2)

TF存在一个已知错误,其中有插值,它会计算条件的两个分支(这就是为什么它只有在你创建了两个安全组时才有效):

https://github.com/hashicorp/terraform/issues/15605

我遇到了不同实现的相同问题 - 目前正尝试使用上述链接中第二条评论中的建议作为解决方法:

  

这是Terraform的一个已知问题。到目前为止,主要的解决方法似乎是找到一些可以在没有错误的情况下运行的分支。

     

例如,在您所描述的内容中,您可以执行以下操作:

     

“$ {truthtest?file(”$ {truthtest?var.file_path:“/ dev / null”}“):”“}

     

或者因为文件(“/ dev / null”)应该等于“”只是:

     

file(“$ {truthtest?var.file_path:”/ dev / null“}”)