为什么Terraform不提供if语句

时间:2020-06-08 14:53:56

标签: 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" {
  count = var.create_foo ? 1 : 0

  name  = "foo"
  type  = "String"
  value = "bar"
}

,但这感觉更像是一种解决方法。这还不是故事的结局。除了这种难以理解的count构造之外,还需要在其他各处使用aws_ssm_parameter.foo[0]来引用第一个参数。

所以我的问题是:为什么Terraform不实现这样的关键字?有没有理由不适合设计?实施起来是否只是技术上复杂,可能很快就会出现?

老实说,我正在考虑编写某种Terraform预处理程序,该程序将自动用相应的if语句替换所有count语句,并使用添加的{ {1}}(或更健壮的东西)。有什么原因可能不是个好主意吗?

1 个答案:

答案 0 :(得分:0)

显然,目前对这种便利功能并不感兴趣。有issue created for Terraform,已经很老了,几乎没有投票。