Mulai cepat: Menyebarkan sumber daya pembaruan Azure pertama Anda dengan penyedia AzAPI Terraform

Artikel diuji dengan versi Terraform dan penyedia Terraform berikut:

Terraform memungkinkan definisi, pratinjau, dan penyebaran infrastruktur cloud. Dengan menggunakan Terraform, Anda membuat file konfigurasi menggunakan sintaks HCL. Sintaksis HCL memungkinkan Anda menentukan penyedia cloud - seperti Azure - dan elemen yang membentuk infrastruktur cloud Anda. Setelah membuat file konfigurasi, Anda membuat rencana eksekusi yang memungkinkan Anda mempratinjau perubahan infrastruktur sebelum disebarkan. Setelah memverifikasi perubahan, Anda menerapkan rencana eksekusi untuk menyebarkan infrastruktur.

Gunakan penyedia AzAPI Terraform untuk mengelola fitur baru layanan Azure yang belum didukung oleh AzureRM. Dalam contoh ini, Anda menggunakan azapi_update_resource untuk mengonfigurasi aturan jaringan Azure Event Hubs.

  • Membuat namespace dan aturan Azure Event Hubs dengan AzureRM
  • Menggunakan AzAPI untuk memperbarui namespace dengan aturan jaringan
  • Membuat nama acak untuk namespace layanan Azure Event Hubs
  • Menggunakan penyedia AzureRM untuk membuat grup sumber daya Azure dan jaringan dan sumber daya Azure Event Hubs yang diperlukan
  • Gunakan penyedia AzAPI untuk menambahkan seperangkat aturan jaringan ke azurerm_eventhub_namespace sumber daya

Nota

Contoh kode dalam artikel ini terletak di repositori GitHub Azure Terraform.

Prasyarat

  • Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Memulai.

Saat Anda masuk ke portal Microsoft Azure dengan akun Microsoft, langganan Azure default untuk akun tersebut digunakan.

Terraform secara otomatis mengautentikasi menggunakan informasi dari langganan Azure default.

Jalankan az account show untuk memverifikasi akun Microsoft dan langganan Azure saat ini.

az account show

Setiap perubahan yang Anda buat melalui Terraform ada di langganan Azure yang ditampilkan. Jika itu yang Anda inginkan, lewati sisa artikel ini.

Menerapkan kode Terraform

  1. Buat direktori untuk menguji dan menjalankan kode sampel Terraform dan menjadikannya direktori saat ini.

  2. Buat file bernama providers.tf dan masukkan kode berikut:

    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. Buat file bernama main.tf dan masukkan kode berikut:

    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. Buat file bernama main-generic.tf dan masukkan kode berikut:

    # 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"
            }
          ]
        }
      })
    }
    

Menginisialisasi Terraform

Jalankan terraform init untuk menginisialisasi penyebaran Terraform. Perintah ini mengunduh penyedia Azure yang diperlukan untuk mengelola sumber daya Azure Anda.

terraform init -upgrade

Poin-poin penting:

  • Parameter -upgrade meningkatkan plugin penyedia yang diperlukan ke versi terbaru yang sesuai dengan batasan versi konfigurasi.

Buat rencana pelaksanaan Terraform

Jalankan terraform plan untuk membuat rencana eksekusi.

terraform plan -out main.tfplan

Poin-poin penting:

  • Perintah terraform plan membuat rencana eksekusi, tetapi tidak menjalankannya. Sebaliknya, ini menentukan tindakan apa yang diperlukan untuk membuat konfigurasi yang ditentukan dalam file konfigurasi Anda. Pola ini memungkinkan Anda untuk memverifikasi apakah rencana eksekusi sesuai dengan harapan Anda sebelum membuat perubahan apa pun pada sumber daya aktual.
  • Parameter -out opsional memungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter -out memastikan bahwa rencana yang Anda tinjau benar-benar sesuai dengan yang diterapkan.

Terapkan rencana implementasi Terraform

Jalankan terraform apply untuk menerapkan rencana eksekusi ke infrastruktur cloud Anda.

terraform apply main.tfplan

Poin-poin penting:

  • Contoh perintah terraform apply mengasumsikan Anda sebelumnya menjalankan terraform plan -out main.tfplan.
  • Jika Anda menentukan nama file yang berbeda untuk parameter -out, gunakan nama file yang sama dalam panggilan ke terraform apply.
  • Jika Anda tidak menggunakan parameter -out, panggil terraform apply tanpa parameter apa pun.

Memverifikasi hasilnya

Jalankan az eventhubs namespace network-rule-set show untuk menampilkan aturan jaringan Namespace Event Hubs.

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

Poin-poin penting:

  • Nama grup sumber daya dan nama namespace Event Hubs ditampilkan dalam terraform apply output.

Membersihkan sumber daya

Saat Anda tidak lagi memerlukan sumber daya yang dibuat melalui Terraform, lakukan langkah-langkah berikut:

  1. Jalankan terraform plan dan tentukan destroy opsi.

    terraform plan -destroy -out main.destroy.tfplan
    

    Poin-poin penting:

    • Perintah terraform plan membuat rencana eksekusi, tetapi tidak menjalankannya. Sebaliknya, ini menentukan tindakan apa yang diperlukan untuk membuat konfigurasi yang ditentukan dalam file konfigurasi Anda. Pola ini memungkinkan Anda untuk memverifikasi apakah rencana eksekusi sesuai dengan harapan Anda sebelum membuat perubahan apa pun pada sumber daya aktual.
    • Parameter -out opsional memungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter -out memastikan bahwa rencana yang Anda tinjau benar-benar sesuai dengan yang diterapkan.
  2. Jalankan terraform apply untuk menerapkan rencana pelaksanaan.

    terraform apply main.destroy.tfplan
    

Memecahkan masalah Terraform di Azure

Memecahkan masalah umum saat menggunakan Terraform di Azure

Langkah selanjutnya