Terraform 从地图中检索正确的值

Terraform retrieve correct values from map

这是我的代码:

variable "project_name" {
  type        = map
  description = "Name of the project."
  default     = {
    dr       = "dr"
    prelive  = "prelive"
    prod     = "prod"
  }
}
   
variable "env" {
  description = "env: dr, prelive or prod"
}

variable "client_id" {
  type        = map
  sensitive   = true
  default     = {
    dr      = "dr-client-id"
    prelive = "prelive-client-id"
    prod    = "prod-client-id"
  }
}

variable "client_secret" {
  type        = map
  sensitive   = true
  default     = {
    dr      = "dr-client-secret"
    prelive = "prelive-client-secret"
    prod    = "prod-client-secret"
  }
}

    resource "azurerm_kubernetes_cluster" "cluster" {
      ....
        service_principal {
        client_id     = ...
        client_secret = ...
      }
}

我 运行 使用以下命令之一:

terraform apply -var 'env=dr' 
terraform apply -var 'env=prelive' 
terraform apply -var 'env=prod'

当我提到 env=dr 时,我需要什么,因为 service_principal 我想从 dr 的变量中获取值。所以我需要像下面这样的东西。 对于博士:

service_principal {
        client_id     = dr-client-id
        client_secret = dr-client-secret
      }

对于产品:

service_principal {
            client_id     = prod-client-id
            client_secret = prod-client-secret
          }

你的 var.client_idvar.client_secretmaps。这意味着您可以按如下方式引用它们:

var.client_id[key] # where key is var.env
var.client_secret[key]

这意味着您的资源可能是:

    resource "azurerm_kubernetes_cluster" "cluster" {
      ....
        service_principal {
        client_id     = var.client_id[var.env]
        client_secret = var.client_secret[var.env]
      }
}

如果你想提供一些默认值,你也可以使用lookup