我正在 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) 並將其安全地儲存在 keyvault 中,並在部署 SQL 時進一步引用它。您也可以引用現有的 keyvault 機密作為您的密碼。
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 來檢索變數是一種更複雜但更安全的方法。