共用方式為


使用 Terraform 配置 Azure Compute Gallery

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

本文介紹如何配置 Azure Compute Gallery。

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

  • 使用 Terraform 配置 Azure Compute Gallery(以前稱為共用映射庫)

1.設定您的環境

  • Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

2.實作 Terraform 程式代碼

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

  2. 建立名為 providers.tf 的檔案,並插入下列程序代碼:

    terraform {
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>2.0"
        }
        azuread = {
          source = "hashicorp/azuread"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
  3. 建立名為 main.tf 的檔案,並插入下列程序代碼:

    resource "azurerm_resource_group" "sigrg" {
      location = var.deploy_location
      name     = var.rg_shared_name
    }
    
    # generate a random string (consisting of four characters)
    # https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string
    resource "random_string" "rando" {
      length  = 4
      upper   = false
      special = false
    }
    
    
    # Creates Shared Image Gallery
    # https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/shared_image_gallery
    resource "azurerm_shared_image_gallery" "sig" {
      name                = "sig${random_string.random.id}"
      resource_group_name = azurerm_resource_group.sigrg.name
      location            = azurerm_resource_group.sigrg.location
      description         = "Shared images"
    
      tags = {
        Environment = "Demo"
        Tech        = "Terraform"
      }
    }
    
    #Creates image definition
    # https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/shared_image
    resource "azurerm_shared_image" "example" {
      name                = "avd-image"
      gallery_name        = azurerm_shared_image_gallery.sig.name
      resource_group_name = azurerm_resource_group.sigrg.name
      location            = azurerm_resource_group.sigrg.location
      os_type             = "Windows"
    
      identifier {
        publisher = "MicrosoftWindowsDesktop"
        offer     = "office-365"
        sku       = "20h2-evd-o365pp"
      }
    }
    
    
  4. 建立名為 variables.tf 的檔案,並插入下列程序代碼:

variable "deploy_location" {
  type        = string
  default     = "eastus"
  description = "The Azure Region in which all resources in this example should be created."
}

variable "rg_shared_name" {
  type        = string
  default     = "rg-shared-resources"
  description = "Name of the Resource group in which to deploy shared resources"
}
  1. 建立名為 output.tf 的檔案,並插入下列程序代碼:
output "location" {
  description = "The Azure region"
  value       = azurerm_resource_group.sigrg.location
}

output "Compute_Gallery" {
  description = "Azure Compute Gallery"
  value       = azurerm_shared_image_gallery.sig.name
}

3. 建立 Terraform 執行計劃

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

terraform plan -out main.tfplan

重點:

  • terraform plan 命令會建立執行計劃,但不會執行它。 然而,它會決定哪些動作是必要的,以建立您組態檔中所指定的設定。 此模式可讓您在對實際資源進行任何變更之前,先確認執行計劃是否符合您的預期。
  • 選擇性 -out 參數可讓您指定計劃的輸出檔。 使用 -out 參數可確保您查看的計劃確切地被套用。

4. 應用 Terraform 執行計劃

執行terraform apply指令將執行計劃套用至您的雲端基礎設施。

terraform apply main.tfplan

重點:

  • 範例 terraform apply 命令假設您先前已執行 terraform plan -out main.tfplan
  • 如果您為 -out 參數指定了不同的檔案名,請在呼叫 terraform apply時使用相同的檔案名。
  • 如果您未使用 -out 參數,請呼叫沒有任何參數的 terraform apply

5.清除資源

當您不再需要透過 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 時的常見問題進行疑難解答

後續步驟