Azure adalah tempat PowerShell menunjukkan kekuatan penuhnya: dari provisioning hingga operasi harian bisa dikendalikan lewat cmdlet. Episode ini membahas modul Az, autentikasi Connect-AzAccount, resource group, VM, storage, jaringan, Microsoft Graph untuk identitas, hingga runbook dan hybrid worker di Azure Automation.

Di episode 26 kalian mendeskripsikan keadaan mesin dengan DSC dan menegakkannya secara otomatis. Tapi ada satu skala yang belum tersentuh: cloud. Ketika infrastruktur kalian tumbuh, membuat, mengubah, dan mematikan resource tidak bisa lagi dilakukan lewat portal dengan tangan — harus lewat kode. Dan di Azure, PowerShell adalah salah satu bahasa utama kode itu.
Episode 27 ini membawa PowerShell ke Azure secara menyeluruh: modul Az sebagai pengganti AzureRM, autentikasi dengan Connect-AzAccount, pengelolaan subscription dan resource group, operasi VM, storage, dan jaringan, manajemen identitas lewat Microsoft Graph, hingga Azure Automation — platform runbook, jadwal, variabel, kredensial, dan hybrid worker yang menjalankan otomasi terpusat.
Modul Az adalah kumpulan cmdlet resmi untuk mengelola Azure. Instalasinya dari PowerShell Gallery:
Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force
Get-Module -ListAvailable AzInstall-Module mengambil modul Az dan dependensinya. Modul ini besar — untuk lingkungan terbatas, instal per-layanan seperti Az.Compute atau Az.Storage. Prinsipnya sama seperti AWS.Tools di episode 28: bawa modul yang dipakai, bukan seluruh rak.
Semua operasi dimulai dengan autentikasi:
Connect-AzAccount
Get-AzSubscription
Set-AzContext -Subscription "my-subscription-id"Connect-AzAccount membuka alur login; Get-AzSubscription menampilkan subscription yang bisa diakses; Set-AzContext mengunci sesi ke satu subscription — setiap cmdlet Az.* berikutnya bekerja di sana. Di CI/CD, login biasanya memakai service principal atau managed identity, bukan akun interaktif — prinsip yang sama dengan kredensial non-interaktif di episode-episode awal: kode tidak pernah menyimpan secret.
Resource Group adalah wadah logis semua resource Azure — bayangkan sebagai folder tempat semua aset satu aplikasi dikumpulkan. Operasi dasarnya:
New-AzResourceGroup -Name "rg-prod" -Location "southeastasia"
Get-AzResourceGroup -Name "rg-prod"Resource group memberi dua hal penting: batas biaya (tag semua resource di dalamnya untuk laporan) dan batas hidup (hapus satu resource group = hapus semua isinya). Kebiasaan baik: beri nama dengan prefiks jenis dan lingkungan — rg-prod, rg-staging — supaya daftar resource group sendiri bisa dibaca tanpa dokumentasi.
Siklus hidup VM Azure dikendalikan dengan cmdlet yang polanya sudah kalian kenal sejak episode awal series — New, Get, Start, Stop, Remove:
New-AzVM -ResourceGroupName "rg-prod" -Name "web-01" `
-Location "southeastasia" -Image "Ubuntu2204" `
-Size "Standard_B1s" -Credential $cred
Start-AzVM -ResourceGroupName "rg-prod" -Name "web-01"
Stop-AzVM -ResourceGroupName "rg-prod" -Name "web-01" -Force
Get-AzVM -ResourceGroupName "rg-prod" -Name "web-01"
Remove-AzVM -ResourceGroupName "rg-prod" -Name "web-01"New-AzVM menerima banyak parameter — image, ukuran, kredensial, jaringan — dan bisa dialiri dari satu cmdlet ke cmdlet lain. Otomasi berbasis objek ini yang membuat operasi puluhan VM hanya satu loop foreach:
Get-AzVM -ResourceGroupName "rg-prod" |
Start-AzVMPenyimpanan dan jaringan adalah dua tulang punggung infrastruktur yang sering dibuat bersamaan dengan VM:
New-AzStorageAccount -ResourceGroupName "rg-prod" `
-Name "storageprod123" -Location "southeastasia" `
-SkuName "Standard_LRS"
Get-AzStorageAccount -ResourceGroupName "rg-prod"New-AzVirtualNetwork -ResourceGroupName "rg-prod" `
-Name "vnet-prod" -AddressPrefix "10.0.0.0/16" `
-Location "southeastasia"
Add-AzVirtualNetworkSubnetConfig -Name "subnet-app" `
-AddressPrefix "10.0.1.0/24" -VirtualNetwork $vnet
New-AzPublicIpAddress -ResourceGroupName "rg-prod" `
-Name "pip-web-01" -Location "southeastasia" `
-Sku "Standard" -AllocationMethod "Static"Pola yang sama berulang di mana-mana: membuat resource adalah satu cmdlet dengan parameter yang deskriptif. Begitu kalian hafal satu siklus — buat resource group, buat resource, baca, ubah, hapus — seluruh Azure terbuka, karena hampir semua layanan mengikuti ritme yang sama.
Warning
Azure mengenakan biaya selama resource hidup — termasuk VM yang tidak dipakai. Jadwalkan penghentian otomatis, selalu tahu berapa banyak resource yang berjalan (cek Get-AzResource), dan hapus resource group yang tidak terpakai. Cloud mengubah infrastruktur menjadi pengeluaran berkelanjutan: kendalikan dengan kebiasaan, bukan ketakutan.
Manajemen identitas Azure — user, grup, aplikasi — berpindah dari modul lama AzureAD ke Microsoft Graph PowerShell. Modul Microsoft.Graph membungkus Graph API (kini satu-satunya cara resmi mengelola identitas Microsoft):
Install-Module -Name Microsoft.Graph -Scope CurrentUser -Force
Connect-MgGraph -Scopes "User.Read.All", "Group.Read.All"Connect-MgGraph meminta izin (scopes) secara eksplisit — pola yang mirip dengan least privilege yang sudah kalian pegang sejak episode awal. Setelah tersambung:
Get-MgUser -Top 10 | Select-Object DisplayName, UserPrincipalName
New-MgUser -UserPrincipalName "budianto@contoso.com" `
-DisplayName "Budianto" -PasswordProfile @{ ForceChangePasswordNextSignIn = $true }
Get-MgGroup -Filter "displayName eq 'IT Operations'"Get-MgUser, New-MgUser, Get-MgGroup mengikuti pola cmdlet yang sama. Data identitas kini berada dalam satu API di belakang modul — dan karena semuanya objek, hasil Get-MgUser bisa langsung dialirkan ke Export-Csv untuk laporan atau ke loop untuk operasi massal.
Azure Automation adalah layanan untuk menjalankan otomasi di Azure secara terpusat dan terjadwal. Unit kerjanya disebut runbook — skrip PowerShell yang berjalan di cloud. Runbook berisi skrip biasa, lalu dipicu oleh schedule atau event. Contoh runbook sederhana yang mematikan VM di luar jam kerja:
Connect-AzAccount -Identity
$rgName = Get-AutomationVariable -Name "ResourceGroupName"
Get-AzVM -ResourceGroupName $rgName |
Where-Object { $_.Tags.Hours -eq "office" } |
Stop-AzVM -Force -NoWaitPerhatikan tiga elemen khas runbook: Connect-AzAccount -Identity memakai managed identity tanpa menyimpan kredensial; Get-AutomationVariable membaca variabel yang disimpan di akun Automation (agar konfigurasi terpisah dari kode); dan skrip memakai cmdlet Az yang sudah dikenal. Runbook yang sama bisa dijadwalkan New-AzAutomationSchedule dan dikaitkan ke runbook untuk berjalan tiap malam.
Credential disimpan terenkripsi di akun Automation dan dibaca dengan Get-AutomationPSCredential — skrip tidak pernah menyentuh secret mentah. Hybrid Worker memperluas jangkauan runbook: ia adalah agen yang diinstal di mesin di luar Azure (lokal atau cloud lain), sehingga satu akun Automation bisa menjalankan skrip di mana-mana — di Azure, di on-premise, dan di jaringan kalian sendiri, semuanya dari satu panel kendali.
Tip
Mulai dari satu runbook kecil yang mematikan VM uji di malam hari. Jadwalkan, amati lognya selama seminggu, lalu tambah runbook berikutnya. Azure Automation menjadi kuat justru karena rutinitas kecil — bukan karena satu runbook raksasa yang mengendalikan segalanya. Perubahan kecil yang terjadwal dan dapat diaudit selalu lebih aman.
Di episode 27 ini kalian telah mengendalikan Azure dengan PowerShell: instalasi modul Az dan autentikasi dengan Connect-AzAccount; pemilihan subscription dengan Set-AzContext; pengelolaan resource group sebagai wadah biaya dan siklus hidup; siklus hidup VM dengan New-AzVM, Start-AzVM, dan Stop-AzVM; provisioning storage account dan jaringan virtual; manajemen identitas user dan grup lewat Microsoft Graph dengan Connect-MgGraph, Get-MgUser, dan Get-MgGroup; serta Azure Automation dengan runbook, schedule, variabel, kredensial, dan hybrid worker.
Poin kunci yang harus kalian bawa:
Connect-AzAccount sekali, lalu seluruh Azure menjadi objek PowerShell.Satu cloud selesai — dan pola yang kalian kuasai ternyata bukan milik Azure saja. Di episode 28 selanjutnya kita membuka peta lebih luas: AWS & GCP Automation — modul AWS.Tools untuk EC2, S3, dan IAM, Cloud SDK gcloud untuk Compute Engine, hingga kapan memilih modul PowerShell, CLI, atau SDK. Sampai jumpa!