Azure で Azure SQL Server を作成しています:
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
terraformexport TF_SQL_SERVER_ADMIN_PASSWORD=<password>
コマンドを実行するだけです。 また、ビルド中に安全に渡すこともできます。 Azure KeyVault または HashiCorp Vault を統合して変数を取得する方法はより複雑ですが、より安全です。