Terraform 基于变量设置 Key Vault 数据源

问题描述 投票:0回答:1

我正在尝试通过 Terraform 设置从 Key Vault 到 SQL 服务器的用户名和密码的数据查找。我有 3 个环境:Dev、UAT 和 Prod,并且每个环境都有不同的信用。 var.environment 的每个环境都有一个变量,它在环境 .tfvars 文件中设置。我已经将机密添加到 Key Vault 中并可以通过数据源访问。

我考虑过使用 If OR 但我只能通过它设置 2 个值。

我还研究过使用带有 tomap 的当地人,使用类似的东西

locals{
  username = tomap({
    devusername = data.azurerm_key_vault_secret.username.value
    devpassword = data.azurerm_key_vault_secret.password.value
  })
}

administrator_login = local.username[var.environment]
data "azurerm_key_vault_secret" "dev-username" {
  name         = "sql-username"
  key_vault_id = data.azurerm_key_vault.kv.id
}

环境变量设置在 tfvars 级别(每个 env 有一个)

variable "environment" {
  type = string
}

但是,您似乎无法将数据值放入地图中,只是想知道是否还有其他方法可以为每个环境设置用户名/密码。

azure terraform azure-keyvault terraform-provider-azure
1个回答
0
投票

使用 terraform 时根据变量设置 Key Vault 的数据源

感谢 Marko E 的意见。您不需要像提到的那样将名称传递给映射,只是因为您有不同的环境。为了在具有多个环境时传递用户名和密码的输入。

我尝试了一种配置,可能不需要根据要求再次定义本地配置。在创建机密之前,请遵循包含环境名称的命名约定

ex: dev-sql-password & dev-sql-username

这将同时实现下面提到的配置

演示配置:

variable "environment" {
  type    = string
  default = "dev" 
}

data "azurerm_key_vault_secret" "sql_username" {
  name         = "${var.environment}-sql-username"
  key_vault_id = data.azurerm_key_vault.example.id
}

data "azurerm_key_vault_secret" "sql_password" {
  name         = "${var.environment}-sql-password"
  key_vault_id = data.azurerm_key_vault.example.id
}

locals {
  sql_username = data.azurerm_key_vault_secret.sql_username.value
  sql_password = data.azurerm_key_vault_secret.sql_password.value
}

resource "azurerm_mssql_server" "example" {
  name                         = "vksbbsqlserver-${var.environment}"
  resource_group_name          = data.azurerm_resource_group.example.name
  location                     = data.azurerm_resource_group.example.location
  version                      = "12.0"
  administrator_login          = local.sql_username
  administrator_login_password = local.sql_password
  minimum_tls_version          = "1.2"
}

enter image description here

部署:

enter image description here

enter image description here

参考:

azurerm_mssql_server |资源 | Hashicorp/azurerm |地形 | Terraform 注册表

© www.soinside.com 2019 - 2024. All rights reserved.