还有更深层的原因,为什么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" {
count = var.create_foo ? 1 : 0
name = "foo"
type = "String"
value = "bar"
}
,但这感觉更像是一种解决方法。这还不是故事的结局。除了这种难以理解的count
构造之外,还需要在其他各处使用aws_ssm_parameter.foo[0]
来引用第一个参数。
所以我的问题是:为什么Terraform不实现这样的关键字?有没有理由不适合设计?实施起来是否只是技术上复杂,可能很快就会出现?
老实说,我正在考虑编写某种Terraform预处理程序,该程序将自动用相应的if
语句替换所有count
语句,并使用添加的{ {1}}(或更健壮的东西)。有什么原因可能不是个好主意吗?