Rövid útmutató: Az első Azure-frissítési erőforrás üzembe helyezése az AzAPI Terraform-szolgáltatóval

A cikk a következő Terraform- és Terraform-szolgáltatói verziókkal lett tesztelve:

Terraform lehetővé teszi a felhőinfrastruktúra definícióját, előnézetét és üzembe helyezését. A Terraform használatával konfigurációs fájlokat hozhat létre HCL-szintaxissal. A HCL szintaxissal megadhatja a felhőszolgáltatót – például az Azure-t – és a felhőinfrastruktúra elemeit. A konfigurációs fájlok létrehozása után létrehoz egy végrehajtási tervet , amely lehetővé teszi az infrastruktúra változásainak előzetes megtekintését az üzembe helyezés előtt. A módosítások ellenőrzése után alkalmazza a végrehajtási tervet az infrastruktúra üzembe helyezésére.

A AzAPI Terraform szolgáltató segítségével kezelheti az AzureRM által még nem támogatott Azure szolgáltatások új funkcióit. Ebben a példában a azapi_update_resource használatával konfigurálja Azure Event Hubs hálózati szabályokat.

  • Event Hubs-névtér és szabály létrehozása az AzureRM használatával
  • A névtér frissítése hálózati szabályokkal az AzAPI használatával
  • Véletlenszerű név létrehozása az Event Hubs-névtérhez
  • Azure-erőforráscsoport és a szükséges hálózati és Event Hubs-erőforrások létrehozása az AzureRM-szolgáltatóval
  • Hálózati szabálykészlet hozzáadása az erőforrásokhoz az azurerm_eventhub_namespace AzAPI-szolgáltatóval

Megjegyzés:

A cikkben szereplő példakód az Azure Terraform GitHub-adattárban található.

Előfeltételek

  • Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, a kezdés előtt hozzon létre egy ingyenes fiókot .

Amikor Microsoft-fiókkal jelentkezik be az Azure Portalra, a rendszer az adott fiók alapértelmezett Azure-előfizetését használja.

A Terraform automatikusan hitelesíti az alapértelmezett Azure-előfizetés adatait.

Futtassa a az account show parancsot az aktuális Microsoft-fiók és Azure-előfizetés ellenőrzésére.

az account show

A Terraformon végzett módosítások a megjelenített Azure-előfizetésben találhatók. Ha ezt szeretné, hagyja ki a cikk többi részét.

A Terraform-kód implementálása

  1. Hozzon létre egy könyvtárat, amelyben tesztelheti a Terraform-mintakódot, és az aktuális könyvtárá teheti.

  2. Hozzon létre egy providers.tf nevű fájlt, és szúrja be a következő kódot:

    terraform {
      required_providers {
        azapi = {
          source  = "azure/azapi"
          version = "=0.1.0"
        }
    
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "=3.0.2"
        }
    
        random = {
          source  = "hashicorp/random"
          version = "=3.1.2"
        }
      }
    }
    
    provider "azapi" {
    }
    
    provider "azurerm" {
      features {}
    }
    
    provider "random" {
    }
    
  3. Hozzon létre egy main.tf nevű fájlt, és szúrja be a következő kódot:

    resource "azurerm_resource_group" "qs101" {
      name     = "rg-qs101-eh-rules"
      location = "westus2"
    }
    
    resource "azurerm_virtual_network" "qs101" {
      name                = "myvnet"
      location            = azurerm_resource_group.qs101.location
      resource_group_name = azurerm_resource_group.qs101.name
      address_space       = ["172.17.0.0/16"]
      dns_servers         = ["10.0.0.4", "10.0.0.5"]
    }
    
    resource "azurerm_subnet" "qs101" {
      name                 = "default"
      resource_group_name  = azurerm_resource_group.qs101.name
      virtual_network_name = azurerm_virtual_network.qs101.name
      address_prefixes     = ["172.17.0.0/24"]
    
      service_endpoints = ["Microsoft.EventHub"]
    }
    
    resource "random_pet" "qs101_namespace" {
      length    = 3
      separator = ""
    }
    
    resource "azurerm_eventhub_namespace" "qs101" {
      name                = random_pet.qs101_namespace.id
      location            = azurerm_resource_group.qs101.location
      resource_group_name = azurerm_resource_group.qs101.name
      sku                 = "Standard"
      capacity            = 2
    }
    
  4. Hozzon létre egy main-generic.tf nevű fájlt, és szúrja be a következő kódot:

    # AzAPI update resource is used to enable Network Rule sets on Event Hub namespace
    resource "azapi_update_resource" "qs101" {
      type      = "Microsoft.EventHub/namespaces/networkRuleSets@2021-11-01"
      name      = "default"
      parent_id = azurerm_eventhub_namespace.qs101.id
    
      body = jsonencode({
        properties = {
          defaultAction       = "Deny"
          publicNetworkAccess = "Enabled"
          virtualNetworkRules = [
            {
              ignoreMissingVnetServiceEndpoint = false
              subnet = {
                # API bug, returned id replaced `resourceGroups` with `resourcegroups`
                id = replace(azurerm_subnet.qs101.id, "resourceGroups", "resourcegroups")
              }
            }
          ]
          ipRules = [
            {
              action = "Allow"
              ipMask = "1.1.1.1"
            }
          ]
        }
      })
    }
    

Inicializálja a Terraformot

Futtassa a Terraform init parancsot a Terraform üzembe helyezésének inicializálásához. Ez a parancs letölti az Azure-erőforrások kezeléséhez szükséges Azure-szolgáltatót.

terraform init -upgrade

Főbb pontok:

  • A -upgrade paraméter frissíti a szükséges szolgáltatói beépülő modulokat a legújabb verzióra, amely megfelel a konfiguráció verziókorlátozásainak.

Terraform végrehajtási terv létrehozása

Végrehajtási terv létrehozásához futtassa a Terraform-tervet .

terraform plan -out main.tfplan

Főbb pontok:

  • A terraform plan parancs létrehoz egy végrehajtási tervet, de nem hajtja végre. Ehelyett meghatározza, hogy milyen műveletek szükségesek a konfigurációs fájlokban megadott konfiguráció létrehozásához. Ez a minta lehetővé teszi annak ellenőrzését, hogy a végrehajtási terv megfelel-e az elvárásainak, mielőtt módosítanák a tényleges erőforrásokat.
  • Az opcionális -out paraméter lehetővé teszi a terv kimeneti fájljának megadását. A -out paraméter használatával biztosítható, hogy az ön által áttekintett terv pontosan az alkalmazott legyen.

A Terraform végrehajtási terv alkalmazása

Használja a terraform apply parancsot a végrehajtási terv felhőinfrastruktúrára való alkalmazásához.

terraform apply main.tfplan

Főbb pontok:

  • A példaparancs terraform apply feltételezi, hogy korábban lefuttattad a terraform plan -out main.tfplan parancsot.
  • Ha másik fájlnevet adott meg a -out paraméterhez, használja ugyanazt a fájlnevet a terraform applyhívásában.
  • Ha nem használta a -out paramétert, hívja meg a terraform apply paraméterek nélkül.

Az eredmények ellenőrzése

A(z) eventhubs namespace network-rule-set show parancsot futtatva megjelenítheti az Event Hubs-névtér hálózati szabályait.

az eventhubs namespace network-rule show --resource-group <resource_group_name> --namespace-name <namespace_name>

Főbb pontok:

  • Az erőforráscsoport neve és az Event Hubs névtérneve megjelenik a terraform apply kimenetben.

Erőforrások tisztítása

Ha már nincs szüksége a Terraformon keresztül létrehozott erőforrásokra, hajtsa végre az alábbi lépéseket:

  1. Csinálja meg a terraform plan parancsot, és adja meg a destroy jelzőt.

    terraform plan -destroy -out main.destroy.tfplan
    

    Főbb pontok:

    • A terraform plan parancs létrehoz egy végrehajtási tervet, de nem hajtja végre. Ehelyett meghatározza, hogy milyen műveletek szükségesek a konfigurációs fájlokban megadott konfiguráció létrehozásához. Ez a minta lehetővé teszi annak ellenőrzését, hogy a végrehajtási terv megfelel-e az elvárásainak, mielőtt módosítanák a tényleges erőforrásokat.
    • Az opcionális -out paraméter lehetővé teszi a terv kimeneti fájljának megadását. A -out paraméter használatával biztosítható, hogy az ön által áttekintett terv pontosan az alkalmazott legyen.
  2. A végrehajtási terv alkalmazásához futtassa a terraform apply parancsot.

    terraform apply main.destroy.tfplan
    

A Terraform hibaelhárítása az Azure-ban

A Terraform Azure-beli használatakor felmerülő gyakori problémák elhárítása

Következő lépések