Mulai cepat: Memecahkan masalah penyebaran JSON template ARM
Mulai cepat ini menjelaskan cara memecahkan masalah kesalahan penyebaran JSON template Azure Resource Manager (template ARM). Anda akan menyiapkan templat dengan kesalahan dan mempelajari cara memperbaiki kesalahan.
Templat Azure Resource Manager adalah file JavaScript Object Notation (JSON) yang menentukan infrastruktur dan konfigurasi untuk proyek Anda. Template tersebut menggunakan sintaksis deklaratif. Anda menjelaskan penyebaran yang Dimaksudkan tanpa menulis urutan perintah pemrograman untuk membuat penyebaran.
Ada dua jenis kesalahan yang terkait dengan penyebaran:
- Kesalahan validasi terjadi sebelum penyebaran dimulai dan disebabkan oleh kesalahan sintaks dalam file Anda. Editor kode seperti Visual Studio Code dapat mengidentifikasi kesalahan ini.
- Kesalahan validasi pra-penerbangan terjadi saat perintah penyebaran dijalankan tetapi sumber daya tidak disebarkan. Kesalahan ini ditemukan tanpa memulai penyebaran. Misalnya, jika nilai parameter tidak benar, kesalahan ditemukan dalam validasi sebelum penerbangan.
- Kesalahan penyebaran terjadi selama proses penyebaran dan hanya dapat ditemukan dengan menilai progres penyebaran di lingkungan Azure Anda.
Kedua jenis kesalahan tersebut mengembalikan kode kesalahan yang Anda gunakan untuk memecahkan masalah penyebaran. Validasi dan kesalahan pra-penerbangan ditampilkan di log aktivitas tetapi tidak muncul di riwayat penyebaran Anda.
Prasyarat
Untuk menyelesaikan mulai cepat ini, Anda memerlukan prasyarat berikut:
- Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
- Visual Studio Code dengan ekstensi Alat Azure Resource Manager terbaru.
- Instal versi terbaru Azure PowerShell atau Azure CLI.
Buat template dengan kesalahan
Salin templat berikut dan simpan secara lokal. Anda akan menggunakan file ini untuk memecahkan masalah kesalahan validasi, kesalahan preflight, dan kesalahan penyebaran. Quickstart ini mengasumsikan Anda telah menamai file troubleshoot.json tetapi Anda dapat menggunakan nama apa pun.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameterss": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"prefixName": {
"type": "string"
}
},
"variables": {
"storageAccountName": "[concat(parameters('prefixName'), uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('storageAccountName')]"
},
"vnetResult": {
"type": "object",
"value": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'doesnotexist'), '2021-03-01', 'Full')]"
}
}
}
Memperbaiki kesalahan validasi
Buka file di Visual Studio Code. Garis bergelombang di bawah parameterss:
menunjukkan kesalahan. Untuk melihat kesalahan validasi, arahkan kursor ke kesalahan.
Anda akan melihat itu variables
dan memiliki kesalahan untuk referensi parameter yang tidak resources
terdefinisi. Untuk menampilkan kesalahan validasi templat, pilih Tampilkan>Masalah.
Semua kesalahan disebabkan oleh ejaan yang salah dari nama elemen.
"parameterss": {
Pesan kesalahan menyatakan validasi templat gagal: Tak bisa menemukan 'parameter' anggota pada objek jenis 'Template'. Jalur 'parameter', baris 4, posisi 16.
Sintaks template ARM untuk parameter menunjukkan bahwa parameters
itu adalah nama elemen yang benar.
Untuk memperbaiki kesalahan validasi dan kesalahan referensi parameter yang tidak terdefinisi, perbaiki ejaan dan simpan file.
"parameters": {
Memperbaiki kesalahan preflight
Untuk membuat kesalahan validasi sebelum penerbangan, Anda akan menggunakan nilai yang salah untuk prefixName
parameter.
Quickstart ini menggunakan troubleshootRG untuk nama grup sumber daya, tetapi Anda dapat menggunakan nama apa pun.
az group create --name troubleshootRG --location westus
az deployment group create \
--resource-group troubleshootRG \
--template-file troubleshoot.json \
--parameters prefixName=long!!StoragePrefix
Template gagal validasi sebelum penerbangan dan penyebaran tidak dijalankan. Ini prefixName
lebih dari 11 karakter dan berisi karakter khusus dan huruf besar.
Storage nama harus antara 3 dan 24 karakter dan hanya menggunakan huruf kecil dan angka. Nilai awalan membuat nama penyimpanan yang tidak valid. Untuk informasi selengkapnya, lihat Memecahkan masalah untuk nama kuota sumber daya. Untuk memperbaiki kesalahan preflight, gunakan awalan yang 11 karakter atau kurang dan hanya berisi huruf kecil atau angka.
Karena penyebaran tidak berjalan, tidak ada riwayat penyebaran.
Log aktivitas menunjukkan kesalahan preflight. Pilih log untuk melihat detail kesalahan.
Memperbaiki kesalahan penyebaran
Jalankan penyebaran dengan nilai awalan yang valid, seperti storage
.
az group create --name troubleshootRG --location westus
az deployment group create \
--resource-group troubleshootRG \
--template-file troubleshoot.json \
--parameters prefixName=storage
Penyebaran dimulai dan terlihat dalam riwayat penyebaran. Penyebaran gagal karena outputs
merujuk jaringan virtual yang tidak ada dalam kelompok sumber daya. Namun, tidak ada kesalahan untuk akun penyimpanan, sehingga sumber daya dikerahkan. Riwayat penyebaran menunjukkan penyebaran yang gagal.
Untuk memperbaiki kesalahan penyebaran, ubah fungsi referensi untuk menggunakan sumber daya yang valid. Untuk informasi selengkapnya, lihat Mengatasi sumber daya yang tidak ditemukan kesalahan . Untuk pemula cepat ini, hapus koma yang mendahului vnetResult
dan semua vnetResult
. Simpan file dan jalankan kembali penyebaran.
"vnetResult": {
"type": "object",
"value": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'doesnotexist'), '2021-03-01', 'Full')]"
}
Setelah validasi, preflight, dan kesalahan penyebaran diperbaiki, templat berikut menyebarkan akun penyimpanan. Riwayat penyebaran dan log aktivitas menunjukkan penyebaran yang berhasil.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"prefixName": {
"type": "string"
}
},
"variables": {
"storageAccountName": "[concat(parameters('prefixName'), uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('storageAccountName')]"
}
}
}
Membersihkan sumber daya
Saat sumber daya Azure yang telah disebarkan tidak lagi diperlukan, hapus grup sumber daya tersebut.
az group delete --name troubleshootRG
Untuk menghapus grup sumber daya dari portal, ikuti langkah-langkah berikut:
- Di portal Microsoft Azure, masukkan Grup sumber daya di kotak pencarian.
- Masukkan nama grup sumber daya di bidang Filter menurut nama.
- Pilih nama grup sumber daya.
- Pilih Hapus grup sumber daya.
- Untuk mengonfirmasi penghapusan, masukkan nama grup sumber daya dan pilih Hapus.
Langkah berikutnya
Dalam mulai cepat ini, Anda telah mempelajari cara memecahkan masalah kesalahan penyebaran template ARM.