Menulis Templat ARM
Bina templat ARM berparameter dalam JSON untuk menggunakan akaun storan dan VM, serta gunakan fungsi templat dan pemboleh ubah supaya templat boleh digunakan semula.
Menulis Templat ARM ialah pelajaran Cloud & IT Cert Prep percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Cloud & IT Cert Prep, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Cloud & IT Cert Prep merangkumi sejumlah 4 pelajaran.
Mengapa Menggunakan Templat ARM?
Templat ARM membolehkan anda mentakrifkan infrastruktur Azure sebagai kod dalam format JSON. Ini membolehkan penggunaan yang boleh diulang dan konsisten, serta dikawal versinya bersama-sama kod aplikasi anda. Templat bersifat idempoten — menjalankan templat yang sama beberapa kali menghasilkan keputusan yang sama, menjadikannya selamat untuk digunakan semula selepas perubahan.
Rangka Asas dan Skema Templat
Setiap templat ARM bermula dengan sifat $schema yang menunjuk kepada URL skema templat, diikuti rentetan contentVersion. Skema memberitahu portal Azure dan sambungan editor cara mengesahkan serta menyediakan IntelliSense untuk templat anda. Lima bahagian utama yang berikutnya ialah 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': {}
}Mentakrifkan Parameter
Parameter menjadikan templat boleh digunakan semula dengan menerima input pada masa penggunaan. Setiap parameter mempunyai type (string, int, bool, object, array, secureString), defaultValue pilihan dan allowedValues pilihan untuk pengesahan. Menggunakan secureString untuk kata laluan memastikan nilai itu tidak pernah direkodkan dalam sejarah penggunaan.
"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 Pemboleh Ubah untuk Nilai yang Dikira
Pemboleh ubah menyimpan nilai yang dikira daripada parameter atau fungsi templat, sekali gus mengurangkan pengulangan dan menjadikan templat lebih mudah diselenggara. Pemboleh ubah dinilai sekali dan dirujuk di seluruh bahagian sumber menggunakan ungkapan [variables('name')]. Corak lazim ialah membina nama sumber dengan menggabungkan parameter dengan akhiran unik.
"variables": {
"uniqueStorageName": "[concat(parameters('storageAccountName'), uniqueString(resourceGroup().id))]",
"location": "[resourceGroup().location]"
}Mentakrifkan Sumber
Tatasusunan resources ialah bahagian teras templat ARM. Setiap elemen menerangkan satu sumber Azure dengan medan wajib: type, apiVersion, name dan location. apiVersion menetapkan versi skema pembekal sumber — sentiasa gunakan versi stabil yang terkini untuk mengakses ciri terbaharu dan mengelakkan sifat yang tidak lagi disokong.
"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 Ungkapan Templat
Ungkapan templat ARM dibungkus dalam kurungan siku [...] dan menyokong fungsi terbina dalam untuk rentetan, tatasusunan, objek dan ID sumber. Fungsi lazim termasuk concat(), resourceGroup(), resourceId(), uniqueString() dan parameters(). Fungsi ini dinilai pada bahagian pelayan oleh ARM pada masa penggunaan, bukan secara setempat.
// 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)]"Output: Mengembalikan Nilai
Bahagian outputs mentakrifkan nilai yang dikembalikan oleh ARM selepas penggunaan berjaya. Output penting untuk merangkaikan templat — anda menggunakan templat rangkaian dan mengeluarkan ID sumber subnet, kemudian menghantarnya sebagai parameter kepada templat VM. Output boleh merujuk kepada sebarang ungkapan, termasuk sifat sumber daripada penggunaan tersebut.
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('uniqueStorageName')]"
},
"blobEndpoint": {
"type": "string",
"value": "[reference(variables('uniqueStorageName')).primaryEndpoints.blob]"
}
}Templat Terpaut dan Bersarang
Untuk seni bina yang kompleks, ARM menyokong templat terpaut (merujuk kepada URL templat luaran) dan templat bersarang (membenamkan templat dalam tatasusunan sumber menggunakan jenis Microsoft.Resources/deployments). Ini membolehkan anda memecahkan penggunaan infrastruktur yang besar kepada bahagian modular dan boleh digunakan semula, sambil mengekalkan satu templat penyelarasan 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')]" }
}
}
}Fail Parameter
Daripada menghantar parameter pada baris perintah, simpannya dalam fail parameter yang berasingan — fail JSON dengan objek parameters yang mengandungi pasangan nama-nilai. Fail parameter boleh dikhususkan mengikut persekitaran (contohnya, dev.parameters.json, prod.parameters.json) dan dihantar ke kawalan sumber, manakala nilai sensitif disimpan dalam rujukan Azure Key Vault dan bukannya 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.jsonMenggunakan dan Mengesahkan Templat
Gunakan perintah Azure CLI az deployment group create untuk menggunakan templat pada kumpulan sumber. Sebelum menggunakan templat pada produksi, jalankan az deployment group validate untuk mengesan ralat skema dan logik, serta az deployment group what-if untuk melihat pratonton perubahan sumber. Ketiga-tiga perintah ini membentuk saluran penggunaan yang selamat: sahkan, pratonton, gunakan.
# 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.jsonAmalan Terbaik Templat ARM
Ikuti amalan terbaik templat ARM berikut: gunakan parameter untuk nilai khusus persekitaran, gunakan pemboleh ubah untuk mengelakkan pengulangan, tetapkan versi API kepada versi stabil, gunakan secureString untuk kata laluan, tambahkan perihalan metadata pada parameter dan asingkan templat besar kepada modul terpaut. Simpan templat dalam repositori Git dan gunakannya melalui saluran CI/CD untuk kebolehkesanan audit.
Semakan Pantas
Uji pemahaman anda tentang konsep Microsoft Azure Fundamentals (AZ-900) daripada pelajaran ini.
Ulang Kaji Pelajaran
Dalam pelajaran ini, anda telah mempelajari bahawa templat ARM ialah dokumen JSON yang mentakrifkan infrastruktur Azure secara Declarative, parameter dan pemboleh ubah menjadikan templat boleh digunakan semula dan diselenggara, serta aliran kerja validate, what-if, deploy membolehkan penggunaan yang selamat dan boleh diulang. Seterusnya, kita akan meneroka Bicep, iaitu lapisan abstraksi moden di atas JSON ARM.
Pelajari Cloud & IT Cert Prep dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 150
- Pelajaran
- 600
Soalan Lazim
Adakah pelajaran “Menulis Templat ARM” percuma?
Ya — teks penuh “Menulis Templat ARM” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Cloud & IT Cert Prep, tingkat taraf kepada CoddyKit PRO. Kursus Cloud & IT Cert Prep merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Menulis Templat ARM”?
Bina templat ARM berparameter dalam JSON untuk menggunakan akaun storan dan VM, serta gunakan fungsi templat dan pemboleh ubah supaya templat boleh digunakan semula. Anda berlatih Cloud & IT Cert Prep menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Cloud & IT Cert Prep?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Cloud & IT Cert Prep di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Menulis Templat ARM” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Cloud & IT Cert Prep ini?
Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.