快速入門:使用 Terraform 建立 Azure 復原服務保存庫
在本快速入門中,您將瞭解如何使用 Terraform 來建立 Azure 資源群組、Azure 復原服務保存庫,以及用來共用 Azure 中檔案的備份原則。 Azure Site Recovery 服務可協助您的商務應用程式在計劃性和非計劃性中斷期間保持在線狀態。 具體而言,Site Recovery 會在災害復原期間使用復寫、故障轉移和復原來管理內部部署機器和 Azure 虛擬機。 這些 Site Recovery 方法可為您的商務持續性和災害復原策略做出貢獻。
Azure 復原服務保存庫是 Azure 中的記憶體實體,其包含備份和恢復點等數據,可保護及管理您的數據。 您會先建立保存庫,然後建立共用檔案的備份原則,以指定備份的時機和頻率,以及保留期間。 此設定可協助確保數據一致地備份,並在需要時輕鬆還原。
Terraform 可讓您定義、預覽和部署雲端基礎結構。 使用 Terraform 時,您可以使用 HCL 語法來建立設定檔。 HCL 語法可讓您指定雲端提供者 (例如 Azure) 和構成雲端基礎結構的元素。 建立設定檔之後,您可以建立執行計畫,讓您先預覽基礎結構變更,之後再部署。 驗證變更之後,您可以套用執行計畫來部署基礎結構。
- 建立具有唯一名稱的 Azure 資源群組。
- 定義 SKU 名稱和階層的局部變數。
- 在資源群組中建立 Azure 復原服務保存庫。
- 建立備份原則以共用資源群組中的檔案。
- 輸出復原服務保存庫的名稱和共用檔案的備份原則。
必要條件
實作 Terraform 程式碼
注意
本文中的範例程式碼位於 Azure Terraform GitHub 存放庫。 您可以檢視內含目前和舊版 Terraform 測試結果的記錄檔。
建立要在其中測試及執行範例 Terraform 程式代碼的目錄,並將其設為目前目錄。
建立名為
main.tf
的檔案,並插入下列程序代碼:# Create Resource Group resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } locals { skuName = "RS0" skuTier = "Standard" } # Create Recovery Services Vault resource "azurerm_recovery_services_vault" "vault" { name = var.vaultName location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name sku = local.skuName } # Create Backup Policy for File Share resource "azurerm_backup_policy_file_share" "policy" { name = "vaultstorageconfig" resource_group_name = azurerm_resource_group.rg.name recovery_vault_name = azurerm_recovery_services_vault.vault.name backup { frequency = "Daily" time = "23:00" } retention_daily { count = 10 } }
建立名為
outputs.tf
的檔案,並插入下列程序代碼:output "recovery_services_vault_name" { value = azurerm_recovery_services_vault.vault.name } output "backup_policy_file_share_name" { value = azurerm_backup_policy_file_share.policy.name }
建立名為
providers.tf
的檔案,並插入下列程序代碼:terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }
建立名為
variables.tf
的檔案,並插入下列程序代碼:variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." } variable "vaultName" { description = "Name of the Recovery Services Vault." type = string default = "examplevault" }
初始化 Terraform
執行 terraform init 來初始化 Terraform 部署。 此命令會下載管理 Azure 資源所需的 Azure 提供者。
terraform init -upgrade
重點︰
-
-upgrade
參數會將必要的提供者外掛程式升級至符合設定版本條件約束的最新版本。
建立 Terraform 執行計畫
執行 terraform plan 以建立執行計畫。
terraform plan -out main.tfplan
重點︰
-
terraform plan
命令會建立執行計畫,但不會執行。 相反地,其會決定要在您指定的設定檔中建立設定所需的動作。 此模式可讓您在對實際資源進行任何變更之前,先確認執行方案是否符合您的預期。 - 選用的
-out
參數可讓您指定計畫的輸出檔。 使用-out
參數可確保您所檢閱的方案就是所套用的方案。
套用 Terraform 執行計畫
執行 terraform apply 將執行計畫套用至您的雲端基礎結構。
terraform apply main.tfplan
重點︰
- 範例
terraform apply
命令假設您之前已執行過terraform plan -out main.tfplan
。 - 如果您為
-out
參數指定了不同的檔案名稱,請在呼叫terraform apply
時使用該檔案名稱。 - 若您未使用
-out
參數,請呼叫terraform apply
,不需要使用參數。
驗證結果
取得 Azure 資源群組名稱。
resource_group_name=$(terraform output -raw resource_group_name)
取得 Azure 復原服務保存庫名稱。
recovery_services_vault_name=$(terraform output -recovery_services_vault_name)
取得 Azure 復原服務保存庫備份原則檔案共享名稱。
backup_policy_file_share_name=$(terraform output -backup_policy_file_share_name)
執行
az backup vault show
以檢視 Azure 復原服務保存庫。az backup vault show --name $recovery_services_vault_name --resource group $resource_group_name
清除資源
當您不再需要透過 Terraform 建立的資源時,請執行下列步驟:
執行 terraform plan 並指定
destroy
旗標。terraform plan -destroy -out main.destroy.tfplan
重點︰
-
terraform plan
命令會建立執行計畫,但不會執行。 相反地,其會決定要在您指定的設定檔中建立設定所需的動作。 此模式可讓您在對實際資源進行任何變更之前,先確認執行方案是否符合您的預期。 - 選用的
-out
參數可讓您指定計畫的輸出檔。 使用-out
參數可確保您所檢閱的方案就是所套用的方案。
-
執行 terraform apply 以套用執行方案。
terraform apply main.destroy.tfplan
對 Azure 上的 Terraform 進行疑難排解
針對在 Azure 上使用 Terraform 時的常見問題進行疑難排解。