Menulis Templat ARM
Buat templat ARM berparameter dalam JSON untuk menerapkan akun penyimpanan dan VM, lalu gunakan fungsi templat dan variabel agar templat dapat digunakan kembali.
Menulis Templat ARM adalah pelajaran Cloud & IT Cert Prep gratis di CoddyKit. Ini adalah pelajaran 2 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 Cloud & IT Cert Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.
Mengapa Menggunakan Templat ARM?
Templat ARM memungkinkan Anda mendefinisikan infrastruktur Azure sebagai kode dalam format JSON. Dengan demikian, Anda dapat melakukan penerapan yang konsisten dan dapat diulang, serta mengelolanya dengan kontrol versi bersama kode aplikasi. Templat bersifat idempoten — menjalankan templat yang sama beberapa kali akan menghasilkan hasil yang sama, sehingga aman untuk diterapkan kembali setelah perubahan.
Kerangka dan Skema Templat
Setiap templat ARM dimulai dengan properti $schema yang menunjuk ke URL skema templat, kemudian string contentVersion. Skema memberi tahu portal Azure dan ekstensi editor cara memvalidasi serta menyediakan IntelliSense untuk templat Anda. Lima bagian utama berikutnya adalah parameters, variables, functions, resources, dan outputs.
{
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#',
'contentVersion': '1.0.0.0',
'parameters': {},
'variables': {},
'functions': [],
'resources': [],
'outputs': {}
}Mendefinisikan Parameter
Parameter membuat templat dapat digunakan kembali dengan menerima input saat penerapan. Setiap parameter memiliki type (string, int, bool, object, array, secureString), defaultValue opsional, dan allowedValues opsional untuk validasi. Menggunakan secureString untuk kata sandi memastikan nilainya tidak pernah dicatat dalam riwayat penerapan.
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24,
"metadata": { "description": "Globally unique storage account name" }
},
"sku": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": ["Standard_LRS", "Standard_GRS", "Premium_LRS"]
}
}Menggunakan Variabel untuk Nilai Terhitung
Variabel menyimpan nilai yang dihitung dari parameter atau fungsi templat, sehingga mengurangi pengulangan dan membuat templat lebih mudah dipelihara. Variabel dievaluasi satu kali dan dirujuk di seluruh bagian sumber daya menggunakan ekspresi [variables('name')]. Pola yang umum digunakan adalah membuat nama sumber daya dengan menggabungkan parameter dan akhiran unik.
"variables": {
"uniqueStorageName": "[concat(parameters('storageAccountName'), uniqueString(resourceGroup().id))]",
"location": "[resourceGroup().location]"
}Mendefinisikan Sumber Daya
Larik resources adalah inti dari templat ARM. Setiap elemennya menjelaskan satu sumber daya Azure dengan bidang wajib: type, apiVersion, name, dan location. apiVersion menetapkan versi skema penyedia sumber daya — selalu gunakan versi stabil terbaru untuk mengakses fitur terbaru dan menghindari properti yang tidak digunakan lagi.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"name": "[variables('uniqueStorageName')]",
"location": "[variables('location')]",
"sku": { "name": "[parameters('sku')]" },
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true,
"minimumTlsVersion": "TLS1_2"
}
}
]Fungsi dan Ekspresi Templat
Ekspresi templat ARM diapit tanda kurung siku [...] dan mendukung fungsi bawaan untuk string, larik, objek, dan ID sumber daya. Fungsi yang umum digunakan meliputi concat(), resourceGroup(), resourceId(), uniqueString(), dan parameters(). Fungsi-fungsi ini dievaluasi di sisi server oleh ARM saat penerapan, bukan secara lokal.
// Reference a resource ID inside a template
"subnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', 'myVNet', 'mySubnet')]"
// Build a unique, deterministic name
"name": "[concat('storage', uniqueString(resourceGroup().id))]"
// Conditionally include a resource
"condition": "[equals(parameters('deployStorage'), true)]"Outputs: Mengembalikan Nilai
Bagian outputs menentukan nilai yang dikembalikan ARM setelah penerapan berhasil. Output sangat penting untuk merangkai templat — Anda menerapkan templat jaringan dan mengeluarkan ID sumber daya subnet, lalu meneruskannya sebagai parameter ke templat VM. Output dapat merujuk ke ekspresi apa pun, termasuk properti sumber daya dari penerapan.
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('uniqueStorageName')]"
},
"blobEndpoint": {
"type": "string",
"value": "[reference(variables('uniqueStorageName')).primaryEndpoints.blob]"
}
}Templat Tertaut dan Bertingkat
Untuk arsitektur yang kompleks, ARM mendukung templat tertaut (yang merujuk ke URL templat eksternal) dan templat bertingkat (yang menyematkan templat di dalam larik sumber daya menggunakan jenis Microsoft.Resources/deployments). Dengan demikian, Anda dapat memecah penerapan infrastruktur yang besar menjadi bagian-bagian modular yang dapat digunakan kembali, dengan tetap mempertahankan satu templat orkestrasi sebagai titik masuk.
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "networkDeploy",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/contoso/templates/main/network.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"vnetName": { "value": "[parameters('vnetName')]" }
}
}
}File Parameter
Alih-alih meneruskan parameter melalui baris perintah, simpan parameter dalam file parameter terpisah — file JSON dengan objek parameters yang berisi pasangan nama-nilai. File parameter dapat dibuat khusus untuk setiap lingkungan (misalnya, dev.parameters.json, prod.parameters.json) dan disimpan dalam kontrol sumber, sementara nilai sensitif tetap berada dalam referensi Azure Key Vault, bukan sebagai teks biasa.
// dev.parameters.json
{
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#',
'contentVersion': '1.0.0.0',
'parameters': {
'storageAccountName': { 'value': 'devstorageacct' },
'sku': { 'value': 'Standard_LRS' }
}
}
// Deploy with parameters file
// az deployment group create -g MyRG -f azuredeploy.json -p dev.parameters.jsonMenerapkan dan Memvalidasi Templat
Gunakan perintah Azure CLI az deployment group create untuk menerapkan templat ke grup sumber daya. Sebelum menerapkannya ke produksi, jalankan az deployment group validate untuk menemukan kesalahan skema dan logika, lalu az deployment group what-if untuk melihat pratinjau perubahan sumber daya. Ketiga perintah ini membentuk pipeline penerapan yang aman: validasi, pratinjau, penerapan.
# Step 1: Validate the template syntax
az deployment group validate \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.json
# Step 2: Preview changes
az deployment group what-if \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.json
# Step 3: Deploy
az deployment group create \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.jsonPraktik Terbaik Templat ARM
Ikuti praktik terbaik templat ARM berikut: gunakan parameter untuk nilai khusus lingkungan, gunakan variabel untuk menghindari pengulangan, tetapkan versi API ke versi stabil, gunakan secureString untuk kata sandi, tambahkan deskripsi metadata ke parameter, dan pisahkan templat besar menjadi modul tertaut. Simpan templat dalam repositori Git dan terapkan melalui pipeline CI/CD agar mudah diaudit.
Pemeriksaan Singkat
Uji pemahaman Anda tentang konsep Microsoft Azure Fundamentals (AZ-900) dari pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini, Anda telah mempelajari bahwa templat ARM adalah dokumen JSON yang mendefinisikan infrastruktur Azure secara deklaratif, parameter dan variabel membuat templat dapat digunakan kembali dan dipelihara, serta alur kerja validate, what-if, deploy memungkinkan penerapan yang aman dan dapat diulang. Selanjutnya, kita akan mempelajari Bicep, abstraksi modern di atas JSON ARM.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menulis Templat ARM” gratis?
Ya — teks lengkap “Menulis Templat ARM” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cloud & IT Cert Prep, upgrade ke CoddyKit PRO. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menulis Templat ARM”?
Buat templat ARM berparameter dalam JSON untuk menerapkan akun penyimpanan dan VM, lalu gunakan fungsi templat dan variabel agar templat dapat digunakan kembali. Kamu berlatih Cloud & IT Cert Prep 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 Cloud & IT Cert Prep?
Tidak diperlukan pengalaman sebelumnya. Cloud & IT Cert Prep 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 2 dari 4.
Berapa lama pelajaran “Menulis Templat ARM” 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 Cloud & IT Cert Prep ini?
Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Cara Kerja Azure Resource Manager
- Menulis Templat ARM
- Bicep: IaC Azure Modern
- Terraform di Azure