terraform 一个变量中的多个 if else 语句

terraform multiple if else statement in one variable

我们有一个用于生产和非生产的文件夹,但是,我们想将其拆分为两个单独的文件夹。我遇到的一个问题是多个 if-else 语句,如下所示:

elastic_search_host  = "${var.account_name == "prod" ? var.es_friendly_name_part : var.dedicated_es_cluster ? "${var.environment}-${var.es_friendly_name_part}" : "nonprod-${var.es_friendly_name_part}"}.${lookup(var.route53_domains, var.account_name)}"

我理解第一部分说的,如果帐户是 prod 则使用 'es_friendly_name_part' 否则使用 'dedicated_es_cluster' 但在此之后我不明白什么是 prod 什么不是。

我假设这被拆分成另一个 if-else 语句说,also if prod then use

'"${var.environment}-${var.es_friendly_name_part}"'

否则使用

“非产品-${var.es_friendly_name_part}”

但是无论帐户如何使用最后的 .lookup 函数,还是这只是非生产?

另外,如果我想拆分它,以便它仅用于生产 - 所以不需要 if-else 我该怎么做?我需要连接或类似的东西吗?

你的if相当于(伪代码):

if var.account_name == "prod" then
   var.es_friendly_name_part.${lookup(var.route53_domains, var.account_name)}
else 
   
  if var.dedicated_es_cluster != "" then
     ${var.environment}-${var.es_friendly_name_part}.${lookup(var.route53_domains, var.account_name)}
  else
    nonprod-${var.es_friendly_name_part}.${lookup(var.route53_domains, var.account_name)}
  end
 
end

is the .lookup function at the end used regardless of account

在所有情况下都会执行。

split this so this is just used for production

如果你只有产品,那么你总是有第一个条件,结果是:

var.es_friendly_name_part.${lookup(var.route53_domains, var.account_name)}