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:

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.

Screenshot of Visual Studio Code highlighting a template validation error with a red wavy line under the misspelled 'parameterss:' in the code.

Anda akan melihat itu variables dan memiliki kesalahan untuk referensi parameter yang tidak resourcesterdefinisi. Untuk menampilkan kesalahan validasi templat, pilih Tampilkan>Masalah.

Screenshot of Visual Studio Code showing the Problems tab listing undefined parameter reference errors for 'variables' and 'resources' sections.

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.

Screenshot of Azure resource group overview page displaying an empty deployment history section due to a preflight error.

Log aktivitas menunjukkan kesalahan preflight. Pilih log untuk melihat detail kesalahan.

Screenshot of Azure resource group activity log showing a preflight error entry with a red exclamation mark icon.

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.

Screenshot of Azure resource group overview page showing a failed deployment with a red exclamation mark icon in the deployment history section.

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:

  1. Di portal Microsoft Azure, masukkan Grup sumber daya di kotak pencarian.
  2. Masukkan nama grup sumber daya di bidang Filter menurut nama.
  3. Pilih nama grup sumber daya.
  4. Pilih Hapus grup sumber daya.
  5. 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.