Terraform di Azure
Konfigurasikan penyedia Terraform AzureRM, tulis rencana infrastruktur dasar, lalu pahami kapan Terraform lebih tepat dipilih daripada alat ARM/Bicep asli.
Terraform di Azure adalah pelajaran Azure Fundamentals gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Azure Fundamentals, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Azure Fundamentals mencakup 4 pelajaran total.
Apa Itu Terraform dan Mengapa Azure?
Terraform adalah alat Infrastruktur sebagai Kode sumber terbuka yang dikembangkan oleh HashiCorp. Berbeda dengan Bicep, Terraform tidak bergantung pada cloud tertentu — satu basis kode Terraform dapat mengelola resource di Azure, AWS, GCP, dan banyak provider lainnya secara bersamaan. Di Azure, Terraform menggunakan provider AzureRM untuk berinteraksi dengan API ARM, sehingga menjadi pilihan populer bagi organisasi multi-cloud.
Provider Terraform AzureRM
Provider AzureRM adalah plugin yang diunduh dan digunakan Terraform untuk menerjemahkan konfigurasi Terraform menjadi panggilan API ARM. Provider ini dikelola oleh HashiCorp dan Microsoft serta merupakan cara resmi untuk mengelola resource Azure dengan Terraform. Konfigurasikan provider dengan ID subscription dan metode autentikasi Anda, lalu jalankan terraform init untuk mengunduhnya.
# main.tf — configure the AzureRM provider
terraform {
required_providers {
azurerm = {
source = 'hashicorp/azurerm'
version = '~> 3.0'
}
}
}
provider 'azurerm' {
features {}
subscription_id = var.subscription_id
}Struktur File Terraform
Proyek Terraform Azure biasanya dibagi ke dalam beberapa .tf file: main.tf berisi deklarasi resource, variables.tf mendefinisikan variabel input, outputs.tf mendefinisikan nilai output, dan terraform.tfvars menyediakan nilai variabel untuk Environment tertentu. Terraform secara otomatis memuat semua .tf file di direktori saat ini, sehingga pemisahan menjadi beberapa file semata-mata dilakukan demi keterbacaan.
# variables.tf
variable 'resource_group_name' {
description = 'Name of the resource group'
type = string
default = 'my-rg'
}
variable 'location' {
description = 'Azure region'
type = string
default = 'eastus'
}Mendeklarasikan Resource Azure
Dalam Terraform, Anda mendeklarasikan resource Azure menggunakan blok resource. Tipe bloknya adalah resource, diikuti tipe resource AzureRM (misalnya, 'azurerm_resource_group') dan nama lokal yang digunakan untuk merujuknya dalam konfigurasi. Nama properti di Terraform menggunakan snake_case, bukan camelCase atau PascalCase seperti yang digunakan dalam JSON ARM.
# main.tf — create a resource group and storage account
resource 'azurerm_resource_group' 'main' {
name = var.resource_group_name
location = var.location
}
resource 'azurerm_storage_account' 'storage' {
name = 'mystorageaccount'
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
account_tier = 'Standard'
account_replication_type = 'LRS'
tags = {
environment = 'dev'
}
}Alur Kerja Terraform: Init, Plan, Apply
Alur kerja inti Terraform terdiri dari tiga Step. terraform init mengunduh provider AzureRM dan menyiapkan backend. terraform plan membandingkan konfigurasi Anda dengan state saat ini dan menampilkan perbedaan mengenai hal yang akan dibuat, diubah, atau dihancurkan — mirip dengan what-if milik ARM. terraform apply menjalankan plan dan memperbarui Azure agar sesuai dengan konfigurasi Anda.
# Step 1: Initialise the project and download providers
terraform init
# Step 2: Preview changes (shows + create, ~ update, - destroy)
terraform plan -out=tfplan
# Step 3: Apply the plan
terraform apply tfplan
# Destroy all managed resources
terraform destroyState Terraform
Terraform memelihara file state (terraform.tfstate) yang mencatat state saat ini dari semua resource yang dikelola dan memetakannya ke konfigurasi Anda. File ini memungkinkan Terraform mendeteksi penyimpangan antara konfigurasi dan resource yang ada di Azure. Dalam Environment tim, simpan state dari jarak jauh di Azure Storage Account (backend Terraform) agar semua anggota tim menggunakan file state yang sama.
# Configure remote state in Azure Blob Storage
terraform {
backend 'azurerm' {
resource_group_name = 'tfstate-rg'
storage_account_name = 'tfstateaccount'
container_name = 'tfstate'
key = 'prod.terraform.tfstate'
}
}Autentikasi ke Azure dalam Terraform
Terraform mendukung beberapa metode autentikasi untuk Azure. Selama pengembangan lokal, gunakan az login (autentikasi Azure CLI) — Terraform akan mengambil kredensial secara otomatis. Dalam pipeline CI/CD, gunakan Service Principal dengan client secret atau sertifikat, yang diteruskan melalui variabel Environment. Untuk agen atau VM yang di-host di Azure, gunakan Identitas Terkelola sebagai metode autentikasi paling aman tanpa secret.
# Option 1: Azure CLI (local dev)
az login
terraform plan
# Option 2: Service principal via environment variables
export ARM_CLIENT_ID='00000000-0000-0000-0000-000000000000'
export ARM_CLIENT_SECRET='your-client-secret'
export ARM_SUBSCRIPTION_ID='00000000-0000-0000-0000-000000000000'
export ARM_TENANT_ID='00000000-0000-0000-0000-000000000000'
terraform planModul Terraform untuk Penggunaan Kembali
Seperti modul Bicep, modul Terraform memungkinkan Anda mengemas dan menggunakan kembali pola infrastruktur. Modul adalah direktori yang berisi .tf file. Anda merujuknya dengan blok module, meneruskan input melalui variables, dan menggunakan output. Terraform Registry menyediakan ratusan modul Azure dari komunitas dan modul terverifikasi yang dapat langsung Anda gunakan, seperti modul jaringan AzureRM.
# Use a module from the Terraform Registry
module 'vnet' {
source = 'Azure/vnet/azurerm'
version = '4.0.0'
resource_group_name = azurerm_resource_group.main.name
vnet_location = azurerm_resource_group.main.location
use_for_each = true
address_space = ['10.0.0.0/16']
subnet_prefixes = ['10.0.1.0/24', '10.0.2.0/24']
subnet_names = ['web', 'app']
}Kapan Memilih Terraform atau Bicep
Pilih Bicep jika organisasi Anda hanya menggunakan Azure dan menginginkan integrasi paling erat dengan fitur Azure baru (Bicep mendapatkan dukungan tipe resource baru sejak hari pertama). Pilih Terraform jika Anda mengelola resource di beberapa provider cloud, memerlukan ekosistem modul komunitas yang besar, atau lebih menyukai sintaks HCL dan rangkaian alat HashiCorp. Keduanya valid untuk deployment khusus Azure — preferensi organisasi sering kali menjadi penentu.
Mengimpor Resource yang Sudah Ada
Jika resource sudah ada di Azure sebelum Anda mulai menggunakan Terraform, Anda dapat memasukkannya ke dalam pengelolaan Terraform menggunakan terraform import. Perintah ini mengambil state resource saat ini dan menambahkannya ke file state Terraform. Setelah mengimpor, Anda harus menulis blok konfigurasi yang sesuai secara manual agar cocok dengan resource yang diimpor, lalu menjalankan terraform plan untuk memastikan tidak ada perbedaan.
# Import an existing resource group into Terraform state
terraform import \
azurerm_resource_group.main \
'/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/existing-rg'
# Terraform 1.5+ supports import blocks in configuration
import {
to = azurerm_resource_group.main
id = '/subscriptions/00000000.../resourceGroups/existing-rg'
}Praktik Terbaik Terraform di Azure
Ikuti praktik terbaik berikut untuk Terraform di Azure: simpan state dari jarak jauh di Azure Blob Storage dengan penguncian state yang diaktifkan, gunakan workspace atau file state terpisah untuk Environment yang berbeda, jangan pernah memasukkan secret ke kontrol sumber — gunakan sumber data Azure Key Vault sebagai gantinya, tetapkan versi provider untuk menghindari perubahan yang merusak, dan jalankan Terraform dalam pipeline CI/CD (Azure Pipelines atau GitHub Actions) dengan tahapan persetujuan plan.
Pemeriksaan Singkat
Uji pemahaman Anda tentang konsep Microsoft Azure Fundamentals (AZ-900) dari lesson ini.
Ringkasan Lesson
Dalam lesson ini Anda telah mempelajari bahwa Terraform adalah alat IaC yang tidak bergantung pada cloud tertentu dan menggunakan provider AzureRM untuk mengelola resource Azure, alur kerja init, plan, apply memungkinkan deployment yang aman dan dapat diprediksi, serta state jarak jauh di Azure Blob Storage sangat penting untuk kolaborasi tim. Selanjutnya, kita akan membahas pembuatan App Service plan dan Web App.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Terraform di Azure” gratis?
Ya — teks lengkap “Terraform di Azure” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Azure Fundamentals, upgrade ke CoddyKit PRO. Kursus Azure Fundamentals mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Terraform di Azure”?
Konfigurasikan penyedia Terraform AzureRM, tulis rencana infrastruktur dasar, lalu pahami kapan Terraform lebih tepat dipilih daripada alat ARM/Bicep asli. Kamu berlatih Azure Fundamentals dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Azure Fundamentals?
Tidak diperlukan pengalaman sebelumnya. Azure Fundamentals di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Terraform di Azure” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Azure Fundamentals ini?
Ya. Setiap pelajaran Azure Fundamentals menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.