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_id
和 var.client_secret
是 maps。这意味着您可以按如下方式引用它们:
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。
这是我的代码:
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_id
和 var.client_secret
是 maps。这意味着您可以按如下方式引用它们:
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。