使用Terraform在Azure KeyVault中獲取值

默認情況下,我們如果使用Terraform在Azure上部署VM資源,則必須在變量文件中以明文的方式提供對應的用戶名和密碼信息,從安全的角度講,這種做法存在極大的安全隱患。爲了這種安全隱患,我們可以選擇將用戶名和密碼信息存儲在Azure Keyvault中。在每次部署的時候,Terraform都會以加密的方式從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在Azure KeyVault中獲取值

然後運行terraform plan來查看整體執行計劃:

使用Terraform在Azure KeyVault中獲取值

運行terraform apply來應用部署:

使用Terraform在Azure KeyVault中獲取值

因爲我在terraform文件中加了output參數來輸出我們所獲取到的密碼信息,所以在上圖中我們可以看到綠色"se"部分輸出了對應的密碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章