Terraform简写IF语句中多OR条件的实现方法咨询
解决Terraform简写条件中多值匹配的问题
嗨,我来帮你搞定这个条件判断的写法!你之前的思路是对的,但Terraform的HCL语法里逻辑或要用||,而且每个条件都得是完整的比较表达式,不能只写一个值哦。
下面给你两种可行的实现方式:
方式一:使用逻辑或运算符(||)
把两个完整的相等判断用||连接起来,这是最直观的写法:
"${terraform.workspace == "test" || terraform.workspace == "preproduction" ? true : false}"
其实这里还可以简化,因为条件本身返回的就是布尔值,所以可以直接写成:
"${terraform.workspace == "test" || terraform.workspace == "preproduction"}"
这样结果和之前的三元表达式完全一样,更简洁。
方式二:使用contains函数(更适合多值场景)
如果以后还要加更多环境名称,用contains函数会更清爽,把要匹配的环境放在一个列表里,然后判断当前workspace是否在这个列表中:
"${contains(["test", "preproduction"], terraform.workspace)}"
这种写法扩展性更好,后续加新环境直接在列表里加字符串就行,不用额外加逻辑判断。
之前你写的"${terraform.workspace == "test" OR "preproduction" ? true : false}"有两个问题:一是Terraform里逻辑或的关键字是||而不是OR,二是第二个条件没有完整的比较逻辑,HCL没法识别单独的"preproduction"作为判断条件~
内容的提问来源于stack exchange,提问作者hock
相关产品推荐
相关产品推荐

