我有以下情况:
resource "aws_elastic_beanstalk_application" "service" {
appversion_lifecycle {
service_role = "service-role"
delete_source_from_s3 = "${var.env == "production" ? false : true}"
}
}
Run Code Online (Sandbox Code Playgroud)
如果var.env设置为生产,我会得到想要的结果。
谢谢!
但是,如果未定义var.env,则terraform计划将失败,因为从未定义该变量。我如何才能使它工作而不必定义该变量?
小智 17
似乎这些天您还可以使用“尝试”来检查是否设置了某些内容。
try(var.env, false)
Run Code Online (Sandbox Code Playgroud)
之后您的代码将工作,因为 var.env 现在定义为值“false”,即使“var.env”从未在某处定义。
https://www.terraform.io/docs/configuration/functions/try.html
如果使用的是Terraform 0.12或更高版本,则可以将特殊值null分配给参数以将其标记为“未设置”。
variable "env" {
type = "string"
default = null
}
Run Code Online (Sandbox Code Playgroud)
您只能将其留空,而不是使用当前版本。
您可以将变量的默认值设置为空字符串:
variable "env" {
description = "Env where the module is deployed."
type = string
default = ""
}
Run Code Online (Sandbox Code Playgroud)
完成后,您的检查var.env == "production"将产生false并且参数 delete_source_from_s3 将被分配给 value true。
旁注,语句中不需要插值,
"${var.env == "production" ? false : true}"
随走随走
delete_source_from_s3 = var.env == "production" ? false : true
Run Code Online (Sandbox Code Playgroud)
https://discuss.hashicorp.com/t/how-do-write-an-if-else-block/2563
| 归档时间: |
|
| 查看次数: |
3288 次 |
| 最近记录: |