我正在尝试根据环境更改堆栈名称。我尝试了以下方法:
stack_name = "intl-${var.intl_region}-${var.intl_ctry}-${var.intl_env}-jk-${var.vanity_env == "-np" || var.vanity_env == "-dr"} ? "mstr" : "master"}"
但出现以下错误:
错误:解析错误 /build_workspace/workspace/GCM/PIPE_JENKINS/main.tf:在33:25:嵌套 预期对象:LBRACE获得:ASSIGN
能不能帮我如何根据环境更改堆栈名称?
应为:
if a == a || b ? "c ": "d"
如此:
a==b==c else d
答案 0 :(得分:2)
您在这里的三元语法有点错误:
stack_name = intl-${var.intl_region}-${var.intl_ctry}-${var.intl_env}-jk-${var.vanity_env == "-np" || var.vanity_env == "-dr" ? "mstr" : "master"}
请注意,整个三元语句都位于${}
构造内。
作为一个完整的例子:
variable "intl_region" {
default = "foo"
}
variable "intl_ctry" {
default = "bar"
}
variable "intl_env" {
default = "baz"
}
variable "vanity_env" {}
output "foo" {
value = "intl-${var.intl_region}-${var.intl_ctry}-${var.intl_env}-jk-${var.vanity_env == "-np" || var.vanity_env == "-dr" ? "mstr" : "master"}"
}
并运行它:
$ TF_VAR_vanity_env=-np terraform apply
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Outputs:
foo = intl-foo-bar-baz-jk-mstr
$ TF_VAR_vanity_env=-dr terraform apply
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Outputs:
foo = intl-foo-bar-baz-jk-mstr
$ TF_VAR_vanity_env=quux terraform apply
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Outputs:
foo = intl-foo-bar-baz-jk-master