默認情況下,我們如果使用Terraform在Azure上部署VM資源,則必須在變量文件中以明文的方式提供對應的用戶名和密碼信息,從安全的角度講,這種做法存在極大的安全隱患。爲了這種安全隱患,我們可以選擇將用戶名和密碼信息存儲在Azure Keyvault中。在每次部署的時候,Terraform都會以加密的方式從Azure Keyvault中讀取部署所需的信息,從而避免對應的安全隱患。
若要在Terraform部署中使用Azure Key Vault,我們必須在Terraform中添加如下代碼:
// Get Keyvault Data
data "azurerm_resource_group" "rg_keyvault" {
name = "${var.rg_keyvault}"
}
data "azurerm_key_vault" "keyvault" {
name = "${var.keyvault_name}"
resource_group_name = "${data.azurerm_resource_group.rg_keyvault.name}"
}
data "azurerm_key_vault_secret" "secret_default-windows-linux-admin-password" {
key_vault_id = var.key_vault_id
name = "default-windows-linux-admin-password"
}
然後我們需要將我們從keyvault中獲取到的secret賦值到admin_password變量中:
admin_password = "${data.azurerm_key_vault_secret.secret_secret_default-windows-linux-admin-password.value}"
接下來我們可以運行terraform init來初始化資源:
然後運行terraform plan來查看整體執行計劃:
運行terraform apply來應用部署:
因爲我在terraform文件中加了output參數來輸出我們所獲取到的密碼信息,所以在上圖中我們可以看到綠色"se"部分輸出了對應的密碼。