Terraform条件-如果变量不存在

时间:2018-11-08 02:12:22

标签: terraform

我有以下情况:

resource "aws_elastic_beanstalk_application" "service" {
  appversion_lifecycle {
    service_role          = "service-role"
    delete_source_from_s3 = "${var.env == "production" ?   false : true}"
  }
}

如果var.env设置为生产,我会得到想要的结果。

谢谢!

但是,如果未定义var.env,则terraform计划将失败,因为从未定义该变量。我如何才能使它工作而不必定义该变量?

3 个答案:

答案 0 :(得分:4)

您可以将变量的默认值设置为空字符串:

variable "env" {
  description = "Env where the module is deployed."
  type        = string
  default     = ""
}

完成后,您的检查var.env == "production"将产生false,并将参数delete_source_from_s3分配给值true

旁注,语句中不需要插值

"${var.env == "production" ? false : true}"

随便走吧

delete_source_from_s3 = var.env == "production" ? false : true

https://discuss.hashicorp.com/t/how-do-write-an-if-else-block/2563

答案 1 :(得分:2)

如果使用的是Terraform 0.12或更高版本,则可以将特殊值null分配给参数以将其标记为“未设置”。

variable "env" {
    type = "string"
    default = null
}

您不能将其留空,而不是当前版本。

答案 2 :(得分:0)

这些天似乎您也可以使用“尝试”来检查是否已设置某些内容。

try(var.env, false)

此后,您的代码将正常工作,因为即使从未在某处定义“ var.env”,也已将var.env定义为“ false”。

https://www.terraform.io/docs/configuration/functions/try.html

相关问题