Estou criando um servidor SQL do Azure no Azure:
Eu tenho um variables.tf
arquivo que atualmente possui a senha de administrador:
variable "sql_server_admin_password" {
description = "admin password"
default = "xxxx"
}
Em seguida, faço referência a isso no arquivo principal:
resource "azurerm_sql_server" "main" {
name = var.sql_server_name
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
version = "12.0"
administrator_login = var.sql_server_admin_login
administrator_login_password = var.sql_server_admin_password
}
Não quero verificar este arquivo no controle de origem.
Existe uma maneira terraform de obter o nome de usuário e a senha do administrador nas variáveis de ambiente?
Responder1
Dependendo de como sua implantação está configurada. Você pode gerar uma senha (random_password) e armazená-la com segurança em um keyvault e referenciá-la posteriormente ao implantar seu SQL. Você também pode fazer referência a um segredo do keyvault existente como sua senha.
Alguns links relacionados a isso do Terraform:
Criação de cofre de chaves no Terraform:https://www.terraform.io/docs/providers/azurerm/r/key_vault.html
Busque o segredo de um Azure Key Vault existente: https://www.terraform.io/docs/providers/azurerm/d/key_vault_secret.html
Informações relacionadas ao Azure Key Vault podem ser encontradas aqui:https://azure.microsoft.com/en-us/services/key-vault/
Responder2
Como opção mais simples, você pode remover o valor padrão da variável e passar a variável ao executar terraform plan
ou apply
. Basta export TF_SQL_SERVER_ADMIN_PASSWORD=<password>
executar comandos do terraform. Além disso, pode ser passado com segurança durante as compilações. Integrar o Azure KeyVault ou o HashiCorp Vault para recuperar as variáveis é uma maneira mais complexa, mas mais segura de fazer isso.