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.
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 azapi_resource_action sebagai sumber daya Terraform terkelola untuk melakukan operasi imperatif dan mengubah status pada sumber daya Azure. Dalam contoh ini, Anda membuat akun penyimpanan Azure lalu memutar kunci aksesnya.
azapi_resource_action memiliki dua formulir penggunaan:
-
Sumber daya: Melakukan operasi perubahan status selama
terraform apply. Terraform melacak tindakan dalam status dan dapat secara opsional membalikkannya padaterraform destroy. - Sumber data: Melakukan operasi baca-saja selama perencanaan. Lihat panduan cepat sumber data aksi sumber daya untuk skenario tersebut.
Gunakan formulir sumber daya saat Anda memerlukan Terraform untuk melakukan operasi Azure yang tidak didasarkan pada siklus hidup buat/baca/perbarui/hapus standar—misalnya, memutar kredensial, memulai atau menghentikan VM, atau memicu failover.
- Membuat akun penyimpanan dengan penyedia AzureRM
- Putar kunci akses akun penyimpanan dengan
azapi_resource_action
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 sampel kode Terraform dan menjadikannya direktori saat ini.
Buat file bernama
providers.tfdan masukkan kode berikut:terraform { required_providers { azapi = { source = "Azure/azapi" version = "~> 2.0" } azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } random = { source = "hashicorp/random" version = "~> 3.0" } } } provider "azurerm" { features {} } provider "azapi" {}Buat file bernama
variables.tfdan masukkan kode berikut:variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random value to create a unique name." } variable "storage_account_name_prefix" { type = string default = "st" description = "Prefix of the storage account name that's combined with a random value to create a unique name." }Buat file bernama
main.tfdan masukkan kode berikut:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "random_string" "storage_suffix" { length = 8 upper = false special = false } resource "azurerm_resource_group" "example" { location = var.resource_group_location name = random_pet.rg_name.id } resource "azurerm_storage_account" "example" { name = "${var.storage_account_name_prefix}${random_string.storage_suffix.result}" resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location account_tier = "Standard" account_replication_type = "LRS" } resource "azapi_resource_action" "regenerate_key" { type = "Microsoft.Storage/storageAccounts@2023-01-01" resource_id = azurerm_storage_account.example.id action = "regenerateKey" method = "POST" body = { keyName = "key1" } }Poin-poin penting tentang penggunaan
azapi_resource_actionsebagai sumber daya:- Bidang
actionmenentukan operasi ARM yang akan dilakukan. Untuk rotasi kunci akun penyimpanan, gunakanregenerateKey. - Bidang
methodmenentukan metode HTTP. Sebagian besar tindakan imperatif menggunakanPOST. - Atribut
bodymeneruskan data ke tindakan. Untuk regenerasi kunci, tentukan kunci mana (key1ataukey2) yang akan diputar. - Tindakan dilakukan selama
terraform applydan dilacak dalam status Terraform.
- Bidang
Buat file bernama
outputs.tfdan masukkan kode berikut:output "resource_group_name" { value = azurerm_resource_group.example.name } output "storage_account_name" { value = azurerm_storage_account.example.name }
Jalankan terraform init untuk menginisialisasi implementasi 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.
Jalankan terraform plan untuk membuat rencana pelaksanaan.
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 opsional
-outmemungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter-outmemastikan bahwa rencana yang Anda tinjau benar-benar sesuai dengan yang diterapkan.
Untuk menerapkan rencana eksekusi pada infrastruktur cloud Anda, jalankan terraform apply.
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
Setelah terraform apply selesai, kunci akun penyimpanan telah diganti. Anda dapat memverifikasi rotasi kunci dengan memeriksa kunci akun penyimpanan di Azure.
Jalankan daftar kunci akun penyimpanan az untuk melihat kunci akun penyimpanan.
az storage account keys list \
--resource-group <resource_group_name> \
--account-name <storage_account_name>
Bidang value menunjukkan kunci saat ini.
Contoh tindakan sumber daya lainnya
Sumber daya azapi_resource_action berfungsi dengan banyak operasi Azure. Berikut adalah contoh umum:
-
Virtual Machines:
deallocate,start,restart,powerOff,reimage -
Key Vaults:
purge(untuk vault yang dihapus sementara),rotate(untuk kunci terkelola) -
App Services:
swap(untuk slot penerapan),restart -
Database:
failover,promote - Kompilasi sumber daya: Setiap operasi yang diekspos oleh REST API Azure yang memodifikasi status tanpa membuat atau menghancurkan sumber daya
Membersihkan sumber daya
Saat Anda tidak lagi memerlukan sumber daya yang dibuat melalui Terraform, lakukan langkah-langkah berikut:
Jalankan terraform plan dan tentukan flag
destroy.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 opsional
-outmemungkinkan 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
Menangani masalah umum saat menggunakan Terraform di Azure