我有以下情况:
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计划将失败,因为从未定义该变量。我如何才能使它工作而不必定义该变量?
答案 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