Terraform 簡介
Terraform 開放原始碼 IaC 工具可讓您使用名為 HashiCorp Configuration Language (HCL) 的高階設定語言,來定義和佈建雲端基礎結構。 Terraform 會在描述基礎結構所需狀態的設定檔中制訂基礎結構。 Terraform 可以使用 Terraform 提供者,來管理任何基礎結構,例如公用雲端、私人雲端和 SaaS 服務。
適用於 Azure 基礎結構的 Terraform 提供者
數個 Terraform 提供者可讓您管理 Azure 基礎結構:
- AzureRM:管理 Azure Resource Manager 資源,例如虛擬機器、儲存體帳戶和網路介面。
- AzureAD:管理 Microsoft Entra 資源,例如群組、使用者、服務主體和應用程式。
- AzureDevOps:管理 Azure DevOps 資源,例如代理程式、存放庫、專案、管線和查詢。
- AzAPI:直接使用 Azure Resource Manager API 來管理 Azure 資源。 此提供者藉由啟用最新 Azure 資源的管理,讓 AzureRM 提供者的功能更完善。
- Azure Stack:管理 Azure Stack 資源,例如虛擬機器、DNS、虛擬網路和儲存體。
建立儲存體帳戶
所有 Terraform 設定都必須包含 provider
區塊。 下列 HCL 程式碼會指定 Azure Resource Manager 提供者 (azurerm
)。 會在 eastus
位置中定義名為 storageaccountexamplerg
的 Azure 資源群組。 會在資源群組內建立 Azure 儲存體帳戶。 儲存體帳戶名稱是透過 md5
函式產生之數字的前 24 個字元。
terraform {
required_version = ">=0.12"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>2.0"
}
}
}
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "rg" {
location = "eastus"
name = "storageaccountexamplerg"
}
resource "azurerm_storage_account" "example" {
name = substr(md5(azurerm_resource_group.rg.id), 0, 24)
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
account_kind = "StorageV2"
account_tier = "Standard"
account_replication_type = "LRS"
access_tier = "Hot"
}
執行 Terraform 程式碼
執行 terraform init
以下載管理 Azure 資源所需的 Azure 模組:
terraform init
執行 terraform plan
,以判斷要在設定檔中建立您指定之設定所需的動作。 執行命令會建立執行計畫,但不會加以套用。 此模式可讓您在對實際資源進行任何變更之前,先確認執行計畫是否符合預期。
terraform plan -out main.tfplan
確認執行計畫之後,請執行 terraform apply
以套用計畫。 此命令會建立定義的資源。
terraform apply main.tfplan
確認儲存體帳戶
若要驗證 Azure 儲存體帳戶,您可以使用 terraform state show
命令。 此命令會顯示指定資源的目前狀態。
在本課程模組中建立的儲存體帳戶案例中,此命令會顯示產生的名稱,以及儲存體帳戶屬性及其值的完整清單。
terraform state show 'azurerm_storage_account.example'
清除資源
當您不再需要在本課程模組中建立的資源時,請使用 -destroy
旗標執行 terraform apply
:
terraform plan -destroy -out main.destroy.tfplan
執行 terraform apply
以套用執行計畫:
terraform apply main.destroy.tfplan