如何在Terraform中使用else-if else条件

时间:2018-11-22 12:33:04

标签: terraform

我正在尝试根据环境更改堆栈名称。我尝试了以下方法:

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

1 个答案:

答案 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
相关问题