If statement 为什么Terraform不提供if语句
Terraform为什么不提供if语句来声明这样的资源,还有更深层次的原因吗If statement 为什么Terraform不提供if语句,if-statement,terraform,If Statement,Terraform,Terraform为什么不提供if语句来声明这样的资源,还有更深层次的原因吗 resource "aws_ssm_parameter" "foo" { if = var.create_foo # this is not available name = "foo" type = "String" value = "bar" } 对我来说,这感觉像是一个非常常见的用例 我知道一个人可以写作 resource "aws_ssm_parameter" "foo" { co
resource "aws_ssm_parameter" "foo" {
if = var.create_foo # this is not available
name = "foo"
type = "String"
value = "bar"
}
对我来说,这感觉像是一个非常常见的用例
我知道一个人可以写作
resource "aws_ssm_parameter" "foo" {
count = var.create_foo ? 1 : 0
name = "foo"
type = "String"
value = "bar"
}
但这更像是一种解决办法。这也不是故事的结局。除了这个可读性较差的count
-构造之外,还需要在任何地方使用aws\u ssm\u parameter.foo[0]
引用第一个参数
所以我的问题是:为什么Terraform不实现这样一个关键字?这是否有不适合设计的原因?它是否只是在技术上很难实现,而且可能很快就会出现
老实说,我正在考虑编写某种terraform预处理器,它将自动用相应的
count
语句替换所有if
-语句,并用添加的[0]
替换对该资源的所有引用(或更健壮的东西)。有什么原因可能不是一个好主意吗?显然,目前人们对这种方便的功能不太感兴趣。有一种方法已经很老了,几乎没有人投票支持。使用lambda迭代器执行条件块和资源还有其他方法,但它们都缺乏简单条件块的清洁度。另一方面,新的null
类型更容易支持条件参数。