Muali cepat: Memecahkan masalah penyebaran file Bisep

Mulai cepat ini menjelaskan cara memecahkan masalah kesalahan penyebaran file Bicep. Anda akan membuat file dengan kesalahan dan belajar cara memperbaiki kesalahan.

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. File Bicep dengan kesalahan sintaks tidak dikompilasi ke dalam JSON dan tidak ditampilkan di log aktivitas.

Prasyarat

Untuk menyelesaikan mulai cepat ini, Anda memerlukan prasyarat berikut:

Membuat file Bisep dengan kesalahan

Menyalin file Bicep berikut dan meyimpan secara lokal. Anda akan menggunakan file ini untuk memecahkan masalah kesalahan validasi, kesalahan preflight, dan kesalahan penyebaran. Mulai cepat ini mengasumsikan Anda telah menamai file troubleshoot.bicep tetapi Anda dapat memberikan nama apa pun.

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

@description('Prefix for storage name.')
param prefixName string

var storageAccountName = '${prefixName}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: resourceGroup().location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

resource existingVNet 'Microsoft.Network/virtualNetworks@2021-03-01' existing = {
  name: 'doesnotexist'
}

output storageAccountName string = storageAccountName
output vnetResult object = existingVNet

Memperbaiki kesalahan validasi

Membuka file di Visual Studio Code. Anda akan melihat bahwa Visual Studio Code mengidentifikasi kesalahan sintaks. Deklarasi parameter pertama ditandai dengan squiggles merah untuk menunjukkan kesalahan.

Cuplikan layar Visual Studio Code dengan berlekuk merah menyoroti kesalahan sintaks dalam file Bicep.

Baris yang ditandai dengan kesalahan adalah:

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

Saat Anda mengarahkan parameter kursor, Anda melihat pesan kesalahan.

Cuplikan layar pesan kesalahan terperinci yang ditampilkan di Visual Studio Code saat mengarahkan mouse ke atas kesalahan sintaks dalam file Bicep.

Pesan menyatakan: Jenis deklarasi ini tidak dikenali. Tentukan parameter, variabel, sumber daya, atau deklarasi output. Jika Anda mencoba menyebarkan file ini, Anda akan mendapatkan pesan kesalahan yang sama dari perintah penyebaran.

Jika Anda melihat dokumentasi untuk deklarasi parameter,Anda akan melihat kata kunci param sebenarnya. Saat Anda mengubah sintaks itu, kesalahan validasi menghilang. @allowedDekorator juga ditandai sebagai kesalahan, tetapi kesalahan itu juga diselesaikan dengan mengubah deklarasi parameter. Dekorator ditandai sebagai kesalahan karena mengharapkan deklarasi parameter setelah dekorator. Kondisi ini tidak benar ketika deklarasi itu tidak benar.

Garis tetap adalah:

param storageAccountType string = 'Standard_LRS'

Memperbaiki kesalahan preflight

Sekarang setelah Anda memperbaiki kesalahan validasi, saatnya untuk menyebarkan file. Tapi, Anda akan memberikan nilai parameter yang buruk untuk melihat kesalahan preflight.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.bicep \
  --parameters prefixName=longNamewith!!Charactersthatarenotallowed

Azure Resource Manager menentukan bahwa nama akun penyimpanan berisi karakter yang tidak diizinkan. Ia tidak mencoba penyebaran.

Anda melihat pesan kesalahan yang menunjukkan validasi preflight gagal. Anda juga mendapatkan pesan yang mengatakan nama akun penyimpanan harus antara 3 dan 24 karakter dan menggunakan angka dan huruf kecil saja. Awalan yang Anda berikan tidak memenuhi persyaratan itu. Untuk informasi selengkapnya, lihat Memecahkan masalah untuk nama kuota sumber daya.

Karena kesalahan tertangkap dalam preflight, tidak ada penyebaran dalam sejarah.

Cuplikan layar bagian riwayat penyebaran portal Azure memperlihatkan tidak ada penyebaran untuk file Bicep.

Tapi, penyebaran yang gagal ada di Log Aktivitas.

Cuplikan layar log aktivitas portal Azure yang menampilkan kesalahan validasi preflight untuk penyebaran file Bicep.

Anda dapat membuka detail entri log untuk melihat pesan kesalahan.

Memperbaiki kesalahan penyebaran

Anda akan menyebarkan file lagi dan memberikan nilai yang diizinkan untuk parameter awalan nama.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.bicep \
  --parameters prefixName=stg

Penyebaran dimulai tetapi gagal dengan pesan bahwa jaringan virtual tidak ditemukan. Biasanya, Anda akan memperbaiki kesalahan ini dengan mengubah referensi ke sumber daya. Dalam mulai cepat ini, Anda akan menghapus referensi. Untuk informasi selengkapnya, lihat Memecahkan masalah untuk nama kuota sumber daya.

Perhatikan di portal bahwa penyebaran muncul dalam sejarah.

Cuplikan layar bagian riwayat penyebaran portal Azure memperlihatkan penyebaran yang gagal untuk file Bicep.

Anda dapat membuka entri dalam riwayat penyebaran untuk mendapatkan rincian tentang kesalahan. Kesalahan juga ada di log aktivitas.

File Bicep mencoba mereferensikan jaringan virtual yang tidak ada dalam grup sumber daya Anda. Menghapus referensi ke jaringan virtual yang ada untuk memperbaiki kesalahan.

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
param storageAccountType string = 'Standard_LRS'

@description('Prefix for storage name.')
param prefixName string

var storageAccountName = '${prefixName}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: resourceGroup().location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountName string = storageAccountName

Anda dapat menyebarkan file Bisep itu tanpa kesalahan.

Membersihkan sumber daya

Saat sumber daya Azure yang telah disebarkan tidak lagi diperlukan, hapus grup sumber daya tersebut. Anda dapat menghapus grup sumber daya dari Cloud Shell atau portal.

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

Mulai cepat ini menjelaskan cara memecahkan masalah kesalahan penyebaran file Bisep.