【问题标题】:Terraform use conditional for AWS SecurityGroupsTerraform 有条件地用于 AWS SecurityGroups
【发布时间】:2018-03-08 11:17:44
【问题描述】:

是否可以像这样将 Terraform 条件与 AWS 安全组一起使用:

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

仅当 terraform.workspace 以“PD”开头时,我们才希望创建和附加基于 module1 的安全组,如果不需要,我们不想创建在 module2 中定义的安全组。

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

看起来 Terraform 需要在它的条件下激活和创建资源?

提前致谢!

【问题讨论】:

  • 提供的代码可能太少,无法准确回答这个问题。考虑编写一个最低限度可验证的正确示例,显示非常基本的资源/模块定义。

标签: amazon-web-services terraform


【解决方案1】:

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

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

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

这是 Terraform 的一个已知问题。到目前为止,主要的解决方法似乎是在每个分支中找到一些可以正常运行的东西。

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

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

或者因为 file("/dev/null") 应该等于 "" just:

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

【讨论】:

    猜你喜欢
    • 2019-03-29
    • 2022-06-28
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2021-06-24
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多