一,引言
最近有網友私信我,將 Terraform 部署到 Azure 是一種將基礎結構作爲代碼進行管理的好方法,但是如何使用 Azure Key Vault 來存儲我們的 Secret ?在這篇博文中,我將給大家展示一下展示如何使用 Terraform 引用 Azure Key Vault Secret。
1)這個時候就有人問了,Secret 信息爲什麼要存儲在 Azure Key Vault ?
Azure Key Vault 是在 Azure 中存儲機密的好方法。它是存儲和訪問 Secret 的安全場所。您可以生成、存儲和控制對令牌、密碼、證書、API 密鑰和其他祕密的訪問。
讓我們一起開始今天的內容來展示如何做到這一點 ?
二,正文
1,使用 Terraform 創建 Azure Key Vault
讓我們使用Terraform 創建一個 Key Vault
data "azurerm_resource_group" "cnbate_resource_group" { name = "Web_Test_TF_RG" } resource "azurerm_key_vault" "keyvault1" { name = "cnbateblogwebkv" resource_group_name = data.azurerm_resource_group.cnbate_resource_group.name tenant_id = data.azurerm_client_config.current.tenant_id sku_name = "standard" location = data.azurerm_resource_group.cnbate_resource_group.location access_policy { tenant_id = data.azurerm_client_config.current.tenant_id object_id = data.azurerm_client_config.current.object_id secret_permissions = [ "Get", "List", "Set", "Delete" ] } }
2,使用 Terraform 和 Azure CLI 創建 Secret
Terraform:
resource "azurerm_key_vault_secret" "keyvault_secret1" { name = "Name1" value = "cnbatelisi" key_vault_id = azurerm_key_vault.kv.id }
使用 Azure CLI 創建第二個 Key Vault 機密
az keyvault secret set --vault-name cnabteblogwebkv --name Name2 --value cnbatewangwu
登錄 Azure Portal,找到資源組 " Web_Test_TF_RG " 下的名字叫 “” 的 Key vault
下面創建的兩個 Secret :
3,引用 Terraform 中的兩個祕密
在這個例子中,我在上面添加了兩個 Secret 。我現在將展示如何在 Terraform 中引用它們。
第一個將根據 Terraform 創建的 Secret 創建一個 Storage Account。第二個將根據 Azure CLI 創建的機密創建一個存儲帳戶。
resource "azurerm_storage_account" "storage_account1" { name = azurerm_key_vault_secret.keyvault_secret1.value resource_group_name = data.azurerm_resource_group.cnbate_resource_group.name location = data.azurerm_resource_group.cnbate_resource_group.location account_tier = "Standard" account_replication_type = "LRS" depends_on = [ data.azurerm_resource_group.cnbate_resource_group, azurerm_key_vault_secret.keyvault_secret1 ] }
對於第二個示例,我將使用 datasource 來引用 Azure CLI 創建的 keyvault_secret2
完整代碼:
terraform { # backend "azurerm" { # storage_account_name = "cnbatestorestatefile004" # container_name = "terraform-state" # key = "cnbate.terraform.stats" # } required_providers { azurerm = { } } } provider "azurerm" { features {} } locals { location_eastAsia = "East Asia" } data "azurerm_client_config" "current" { } data "azurerm_resource_group" "cnbate_resource_group" { name = "Web_Test_TF_RG" } resource "azurerm_key_vault" "keyvault1" { name = "cnbateblogwebkv" resource_group_name = data.azurerm_resource_group.cnbate_resource_group.name tenant_id = data.azurerm_client_config.current.tenant_id sku_name = "standard" location = data.azurerm_resource_group.cnbate_resource_group.location access_policy { tenant_id = data.azurerm_client_config.current.tenant_id object_id = data.azurerm_client_config.current.object_id secret_permissions = [ "Get", "List", "Set", "Delete" ] } } resource "azurerm_key_vault_secret" "keyvault_secret1" { name = "Name1" value = "cnbatelisi" key_vault_id = azurerm_key_vault.keyvault1.id } resource "azurerm_storage_account" "storage_account1" { name = azurerm_key_vault_secret.keyvault_secret1.value resource_group_name = data.azurerm_resource_group.cnbate_resource_group.name location = data.azurerm_resource_group.cnbate_resource_group.location account_tier = "Standard" account_replication_type = "LRS" depends_on = [ data.azurerm_resource_group.cnbate_resource_group, azurerm_key_vault_secret.keyvault_secret1 ] } data "azurerm_key_vault_secret" "keyvault_secret2" { name = "Name2" key_vault_id = azurerm_key_vault.keyvault1.id } resource "azurerm_storage_account" "storage_account2" { name = data.azurerm_key_vault_secret.keyvault_secret2.value resource_group_name = data.azurerm_resource_group.cnbate_resource_group.name location = data.azurerm_resource_group.cnbate_resource_group.location account_tier = "Standard" account_replication_type = "LRS" depends_on = [ data.azurerm_resource_group.cnbate_resource_group ] }
登錄 Azure Portal,查看利用Terraform 創建好的 Storage Account
Bingo!!!!! 🎉🎉🎉✌️✌️
三,結尾
在這篇博文中,主要向大家展示瞭如何使用 Azure Key Vault 來存儲 Terraform 創建的 Secret。我希望您覺得這很有用。本文所分享的內容也存在着很多我自己的一些理解,有理解不到位的,望包含,並且指出不足之處!!!!!
參考鏈接:Terraform Key vault
作者:Allen
版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。