Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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_namespacesumber 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.
Konfigurasikan Terraform: Jika Anda belum melakukannya, konfigurasikan Terraform menggunakan salah satu opsi berikut:
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
Buat direktori untuk menguji dan menjalankan kode sampel Terraform dan menjadikannya direktori saat ini.
Buat file bernama
providers.tfdan 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" { }Buat file bernama
main.tfdan 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 }Buat file bernama
main-generic.tfdan 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
-upgrademeningkatkan 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 planmembuat 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
-outopsional memungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter-outmemastikan 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 applymengasumsikan Anda sebelumnya menjalankanterraform plan -out main.tfplan. - Jika Anda menentukan nama file yang berbeda untuk parameter
-out, gunakan nama file yang sama dalam panggilan keterraform apply. - Jika Anda tidak menggunakan parameter
-out, panggilterraform applytanpa 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 applyoutput.
Membersihkan sumber daya
Saat Anda tidak lagi memerlukan sumber daya yang dibuat melalui Terraform, lakukan langkah-langkah berikut:
Jalankan terraform plan dan tentukan
destroyopsi.terraform plan -destroy -out main.destroy.tfplanPoin-poin penting:
- Perintah
terraform planmembuat 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
-outopsional memungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter-outmemastikan bahwa rencana yang Anda tinjau benar-benar sesuai dengan yang diterapkan.
- Perintah
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