我正在尝试通过 Terraform 设置从 Key Vault 到 SQL 服务器的用户名和密码数据查找。我有 3 个环境:开发、UAT 和生产,每个环境都有不同的凭据。每个环境都有一个var.environment变量,该变量在环境 .tfvars 文件中设置。我已经将机密添加到 Key Vault 中,并通过数据源访问这些机密。
我考虑过使用 If OR,但我只能通过它设置 2 个值。
我也研究过使用 locals 和 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 级别(每个环境一个)
variable "environment" {
type = string
}
然而,您似乎无法将数据值放入映射中,只是想知道是否还有其他方法可以为每个环境设置用户名/密码。
感谢Marko E提供的意见。您不需要像上面提到的那样将名称传递给映射,因为您有不同的环境。为了在有多个环境的情况下传递用户名和密码的输入。
我尝试了一种配置,根据要求,可能不需要再次定义本地配置。在创建机密之前,请遵循包含环境名称的命名约定
ex: dev-sql-password & dev-sql-username
这将实现下面提到的配置
演示配置:
部署:
参考:
azurerm_mssql_server | 资源 | hashicorp/azurerm | Terraform | Terraform 注册表