Estou tentando definir uma pesquisa de dados para um nome de usuário e senha de um Key Vault para um servidor SQL via Terraform. Tenho 3 ambientes Dev, UAT e Prod e tenho credenciais diferentes para cada ambiente. Há uma variável para cada ambiente de var.environment que é definida em um arquivo .tfvars de ambiente. Tenho segredos que já foram adicionados a um Key Vault e são acessados por meio de fontes de dados.
Pensei em usar If OR, mas só consigo definir 2 valores com isso.
Também procurei usar locais com um tomap usando algo como
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
}
E a variável de ambiente é definida no nível tfvars (há uma por env)
variable "environment" {
type = string
}
No entanto, parece que você não pode colocar um valor de dados em um mapa. Só estou imaginando se há outras maneiras de definir o nome de usuário/senha por ambiente.
Obrigado Marko E por esta entrada. Você não precisa passar o nome para mapear como mencionado só porque você tem ambientes diferentes. Para passar as entradas para nomes de usuários e segredos enquanto tem múltiplos ambientes.
Eu tentei uma configuração que pode não exigir a definição da configuração local novamente conforme o requisito. Antes de criar os segredos, siga uma convenção de nomenclatura que inclua o nome do ambiente
ex: dev-sql-password & dev-sql-username
isso irá ao mesmo tempo atingir a configuração mencionada abaixo
configuração de demonstração:
Implantação:
consulte:
azurerm_mssql_server | Recursos | hashicorp/azurerm | Terraform | Registro Terraform