我正在 Azure 中创建一个 Azure SQL 服务器:
我有一个variables.tf
文件,其中当前有管理员密码:
variable "sql_server_admin_password" {
description = "admin password"
default = "xxxx"
}
然后我在主文件中引用它:
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
}
我不想将这个文件放入源代码管理中。
是否有一种 terraform 方法可以将管理员用户名和密码放入环境变量中?
答案1
取决于您的部署设置方式。您可以生成一个密码 (random_password) 并将其安全地存储在密钥库中,并在部署 SQL 时进一步引用它。您还可以引用现有的密钥库密钥作为您的密码。
Terraform 中与此相关的一些链接:
在 Terraform 中创建密钥保管库:https://www.terraform.io/docs/providers/azurerm/r/key_vault.html
从现有的 Azure Key Vault 获取机密: https://www.terraform.io/docs/providers/azurerm/d/key_vault_secret.html
与 Azure Key Vault 相关的信息可以在这里找到:https://azure.microsoft.com/en-us/services/key-vault/
答案2
作为最简单的选项,您可以删除变量的默认值并在执行terraform plan
或时传递变量apply
。只需export TF_SQL_SERVER_ADMIN_PASSWORD=<password>
运行 terraform 命令即可。此外,它可以在构建期间安全地传递。集成 Azure KeyVault 或 HashiCorp Vault 来检索变量是一种更复杂但更安全的方法。