deniszh 的答案非常接近,但我想我会澄清一下并清理语法。
在 Terraform 中,布尔值 true 转换为 1,布尔值 false 转换为 0。所以如果你有两个布尔变量var.foo和var.bar,你可以用简单的乘法来表示AND:
count = "${var.foo * var.bar}"
在上面的代码中,只有当var.foo AND var.bar 都是true 时,count 才会为 1,因为 1 * 1 是 1。在所有其他情况下 (1 * 0, 0 * 1, 0 * 0),你得到 0。
为了表示或,您可以利用函数signum(x),如果您传入的x 是正数,则返回1,如果x 为0,则返回0,如果x 为-1一个负数。考虑到这一点,这里是 OR:
count = "${signum(var.foo + var.bar)}"
在上面的代码中,如果 var.foo 或 var.bar 是 true,count 将为 1,并且仅当两者都是 false(signum(1 + 1) = 1,signum(1 + 0) = 1,signum(0 + 1) = 1,@)时为 0 987654348@)。
请注意,要使用上述技术,您必须注意将变量设置为布尔值而不是字符串。你想要这个:
variable "foo" {
# Proper boolean usage
default = true
}
不是这个:
variable "foo" {
# THIS WILL NOT WORK!
default = "true"
}
有关如何执行各种 Terraform 条件的更多信息,请查看Terraform tips & tricks: loops, if-statements, and gotchas 和 Terraform: Up & Running。