【问题标题】:How to use if else-if else condition in Terraform如何在 Terraform 中使用 if else-if else 条件
【发布时间】:2019-04-25 03:33:01
【问题描述】:

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

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

【问题讨论】:

  • 请查看链接有解决方案stackoverflow.com/questions/42461753/…
  • 唯一的问题看起来像一个额外的结束花括号。 ${var.vanity_env == "-np" || var.vanity_env == "-dr"} ? "mstr" : "master"}" 应该是 ${var.vanity_env == "-np" || var.vanity_env == "-dr" ? "mstr" : "master"}"

标签: terraform


【解决方案1】:

那里的三元语法略有错误:

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

【讨论】:

    猜你喜欢
    • 2023-01-30
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多