使用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"部分输出了对应的密码。

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