首页 > 解决方案 > Terraform 中没有 ELSE 的类 IF 条件

问题描述

有没有办法对 Terraform 中的变量内容进行类似 IF 的简单修改?

例如:

resource "null_resource" "validation_stg_l" {
  count = "${length(local.dvo)}"

  triggers {
    dvo_stg = "${ contains( split(",", var.hosted_zones_stg), replace(lookup(local.dvo[count.index], "domain_name"), "*.", "") ) ? local.dvo[count.index] : ///without this part\\\ }"
  }
}

这样您就可以修改变量的实际内容并以这种方式只留下所需的内容?

上面的示例只是实现不适用目标的一个想法 - 条件运算符不能与地图值一起使用(这应该在几个月内在 Terraform 版本 0.12 中更改)。

标签: terraform

解决方案


我是否认为您正在尝试null_resource根据它们的域名是否在列表中,有条件地在 的某些索引实例上设置触发器?

如果我对https://www.terraform.io/docs/providers/null/resource.html的理解是正确的,您可以在条件的错误部分使用任何常量字符串来禁用触发器。空字符串将与任何字符串一样好。

文档说该trigger部分是

任意字符串的映射,当更改时,将强制替换空资源,重新运行任何关联的供应商。

在您的情况下,如果您不希望替换特定的索引资源,只需使用无法更改的字符串。

另一件事。dvo_stg应该是一个字符串,但您尝试分配它local.dvo[count.index],它在其他地方用作地图。那正确吗?


推荐阅读