共用方式為


快速入門:使用 Terraform 建立 Azure 自動化帳戶

在本快速入門中,您會建立 Azure 自動化帳戶,並使用 Terraform 將「讀者」角色指派給帳戶。 自動化帳戶是雲端式服務,可提供執行 Runbook 的安全環境,這是自動化程序的指令碼。 帳戶可以自動化雲端中管理的頻繁、耗時和容易出錯的工作。 此自動化帳戶是在 Azure 資源群組內建立的,這是保留 Azure 解決方案相關資源的容器。 此外,「讀者」角色會指派給自動化帳戶,授與訂用帳戶權限以檢視自動化帳戶中的所有資源,但不會進行任何變更。

Terraform 可啟用雲端基礎結構的定義、預覽和部署。 使用 Terraform,您可以使用 HCL 語法建立組態檔。 HCL 語法可讓您指定雲端提供者 (例如 Azure) 和構成雲端基礎結構的元素。 建立組態檔之後,您會建立一個 執行計劃 ,讓您在部署基礎結構變更之前先預覽這些變更。 驗證變更之後,您可以套用執行計畫來部署基礎結構。

在本文中,您將學會如何:

  • 使用唯一名稱來建立 Azure 資源群組。
  • 產生隨機字串作為 Azure 資源的唯一名稱。
  • 建立自動化帳戶,並啟用公用網路存取。
  • 擷取目前的 Azure 訂用帳戶。
  • 擷取「讀者」的角色定義。
  • 將「讀者」角色指派給自動化帳戶。
  • 輸出所建立資源群組和自動化帳戶的名稱。

先決條件

  • 建立具有有效訂閱的 Azure 帳戶。 您可以 免費建立帳戶。 新自動化帳戶的選項會組織成 Azure 入口網站的 [ 建立自動化帳戶 ] 頁面的索引標籤。

  • 安裝和設定 Terraform

實作 Terraform 程式碼

  1. 建立目錄,然後在目錄中測試並執行範例 Terraform 程式碼,且設為目前的目錄。

  2. 建立名為 main.tf 的檔案,並插入下列程式碼:

    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
    }
    
    resource "random_string" "azurerm_automation_account_name" {
      length  = 13
      lower   = true
      numeric = false
      special = false
      upper   = false
    }
    
    resource "azurerm_automation_account" "example" {
      name                = coalesce(var.automation_account_name, "autoacc-${random_string.azurerm_automation_account_name.result}")
      resource_group_name = azurerm_resource_group.rg.name
      location            = azurerm_resource_group.rg.location
      sku_name            = "Basic"
      identity {
        type         = "SystemAssigned"
      }
    
      public_network_access_enabled = true
    }
    
    data "azurerm_subscription" "current" {}
    
    data "azurerm_role_definition" "contributor" {
      name = "Contributor"
    }
    
    resource "azurerm_role_assignment" "example" {
      scope              = data.azurerm_subscription.current.id
      role_definition_name = "Contributor"
      principal_id       = azurerm_automation_account.example.identity[0].principal_id
    }
    
  3. 建立名為 outputs.tf 的檔案,並插入下列程式碼:

    output "resource_group_name" {
      value = azurerm_resource_group.rg.name
    }
    
    output "automation_account_name" {
      value = azurerm_automation_account.example.name
    }
    
  4. 建立名為 providers.tf 的檔案,並插入下列程式碼:

    terraform {
      required_version = ">=1.0"
    
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>3.0"
        }
        random = {
          source  = "hashicorp/random"
          version = "~>3.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
  5. 建立名為 variables.tf 的檔案,並插入下列程式碼:

    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 "resource_group_location" {
      type        = string
      default     = "eastus"
      description = "Location of the resource group."
    }
    
    variable "automation_account_name" {
      type        = string
      description = "The name of the Automation Account resource. The value will be randomly generated if blank."
      default     = ""
    }
    

初始化 Terraform

執行 terraform init 以初始化 Terraform 部署。 此命令會下載管理 Azure 資源所需的 Azure 提供者。

terraform init -upgrade

要點:

  • -upgrade 參數會將必要的提供者外掛程式升級至符合設定版本條件約束的最新版本。

建立 Terraform 執行計畫

執行 terraform 計劃 以建立執行計劃。

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,不需要使用參數。

驗證結果

  1. 取得 Azure 資源群組名稱。

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. 取得自動化帳戶名稱。

    automation_account_name=$(terraform output -raw automation_account_name)
    
  3. 執行 az automation account show 以檢視自動化帳戶。

    az automation account show --name $automation_account_name --resource-group $resource_group_name
    

清除資源

當您不再需要透過 Terraform 建立的資源時,請執行下列步驟:

  1. 執行 terraform 計劃 並指定 destroy 旗標。

    terraform plan -destroy -out main.destroy.tfplan
    

    要點:

    • terraform plan 命令會建立執行計畫,但不會執行。 相反地,其會決定要在您指定的設定檔中建立設定所需的動作。 此模式可讓您在對實際資源進行任何變更之前,先確認執行方案是否符合您的預期。
    • 選用的 -out 參數可讓您指定計畫的輸出檔。 使用 -out 參數可確保您所檢閱的方案就是所套用的方案。
  2. 執行 terraform apply 以套用執行方案。

    terraform apply main.destroy.tfplan
    

對 Azure 上的 Terraform 進行疑難排解

針對在 Azure 上使用 Terraform 時的常見問題進行疑難解答

後續步驟

在本快速入門中,您建立了自動化帳戶。 探索自動化帳戶的相關文章 以深入瞭解。

若要搭配您的自動化帳戶使用受控識別,請繼續: