Terraform 地形条件-如果变量不存在
我有以下情况:Terraform 地形条件-如果变量不存在,terraform,Terraform,我有以下情况: resource "aws_elastic_beanstalk_application" "service" { appversion_lifecycle { service_role = "service-role" delete_source_from_s3 = "${var.env == "production" ? false : true}" } } 如果将var.env设置为production,我将得到想要的结果 谢谢
resource "aws_elastic_beanstalk_application" "service" {
appversion_lifecycle {
service_role = "service-role"
delete_source_from_s3 = "${var.env == "production" ? false : true}"
}
}
如果将var.env设置为production,我将得到想要的结果
谢谢
但是,如果未定义var.env,terraform plan将失败,因为从未定义该变量。我怎样才能让它工作,而不必定义那个变量 如果您使用的是Terraform 0.12或更高版本,则可以将特殊值null指定给参数,以将其标记为“unset”
不能将其保留为空,当前版本则不能。可以将变量的默认值设置为空字符串:
variable "env" {
description = "Env where the module is deployed."
type = string
default = ""
}
完成后,您的检查var.env==“production”
将生成false
,参数delete\u source\u from\u s3将分配给值true
旁注,语句中不需要插入
“${var.env==“生产”?false:true}”
随你去吧
delete_source_from_s3 = var.env == "production" ? false : true
现在似乎你也可以用“try”来检查设置是否正确
try(var.env, false)
之后,您的代码将正常工作,因为var.env现在使用值“false”定义,即使“var.env”从未在某处定义过
您的意思是不必定义默认值吗?但以后如何检查它是否未设置?显然,您可以检查
var.env==null
这个答案帮助我完成了当前项目,为安全组和规则创建了一个模块。我还没有让它完全工作,但这允许我设置值为空,当我扁平化一个复杂的地图建立了一个列表。我不知道这是存在的。太神了非常感谢。
try(var.env, false)