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