Hızlı Başlangıç: Bicep dosya dağıtım sorunlarını giderme

Bu hızlı başlangıçta Bicep dosyası dağıtım hatalarının nasıl giderilir? Hatalara sahip bir dosya oluşturarak hataları düzeltmeyi öğrenebilirsiniz.

Dağıtımla ilgili üç tür hata vardır:

  • Doğrulama hataları dağıtım başlamadan önce oluşur ve dosyanız söz dizimi hatalarına neden olur. Düzenleyiciniz bu hataları tanımlayabilir.
  • Bir dağıtım komutu çalıştırıldığında ancak kaynaklar dağıtıldığında kontrol öncesi doğrulama hataları oluşur. Bu hatalar dağıtımı başlatmadan bulunur. Örneğin, parametre değeri yanlışsa, hata kontrol öncesi doğrulamada bulunur.
  • Dağıtım hataları dağıtım işlemi sırasında oluşur ve yalnızca dağıtımın ilerleme durumu değerlendirerek bulunabilir.

Tüm hata türleri, dağıtım sorunlarını gidermek için kullanabileceğiniz bir hata kodu döndürür. Doğrulama ve kontrol öncesi hataları etkinlik günlüğünde gösterilir ancak dağıtım geçmişinize gösterilmez. Söz dizimi hataları olan bir Bicep dosyası JSON'a derlenmiş değildir ve etkinlik günlüğünde gösterilmez.

Önkoşullar

Bu hızlı başlangıç işlemini tamamlamak için aşağıdaki öğelere ihtiyacınız vardır:

Hatalarla bicep dosyası oluşturma

Aşağıdaki Bicep dosyasını kopyalayın ve yerel olarak kaydedin. Doğrulama hatası, kontrol öncesi hatası ve dağıtım hatası sorunlarını gidermek için bu dosyayı kullanmalısınız. Bu hızlı başlangıçta, dosyaya troubleshoot.bicep adını verdiyebilirsiniz ancak herhangi bir ad veebilirsiniz.

@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

Doğrulama hatasını düzeltme

Dosyayı dosyanın içinde Visual Studio Code. Bir söz dizimi hatası Visual Studio Code olduğunu fark vardır. İlk parametre bildirimi, bir hatayı belirtmek için kırmızı geçişlerle işaretlenir.

Söz dizim Visual Studio Code gösteren hata iletisinin ekran görüntüsü.

Hatayla işaretlenmiş satırlar:

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

üzerine parameter gelindiğinde bir hata iletisiyle karşılaştınız.

Hata iletisinin ekran görüntüsü Visual Studio Code.

İleti şu şekildedir: "Bu bildirim türü tanınmıyor. Bir parametre, değişken, kaynak veya çıkış bildirimi belirtin." Bu dosyayı dağıtmayı denemeniz, dağıtım komutundan aynı hata iletisini alırsınız.

Parametre bildiriminin belgelerine bakarsanızanahtar sözcüğünün aslında olduğunu param görebilirsiniz. Bu söz dizimlerini değiştirmiyorsanız doğrulama hatası kaybolur. Dekoratör @allowed ayrıca bir hata olarak işaretlenmiştir, ancak bu hata parametre bildirimi değiştirerek de çözülür. Dekoratör, dekoratörden sonra parametre bildirimi beklediğiniz için hata olarak işaretlendi. Bildirim yanlış olduğunda bu koşul doğru değildi.

Sabit çizgi şöyledir:

param storageAccountType string = 'Standard_LRS'

Kontrol öncesi hatasını düzeltme

Doğrulama hatasını düzeltebilirsiniz. Şimdi dosyayı dağıtmanın zamanı geldi. Ancak, bir kontrol öncesi hatasını görmek için hatalı bir parametre değeri sağlayacaksınız.

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 depolama hesabının adının izin verilmiyor karakterler içerdiğini belirler. Dağıtımı denemez.

Kontrol öncesi doğrulamanın başarısız olduğunu belirten bir hata iletisi görüyorsunuz. Ayrıca depolama hesabı adının 3 ila 24 karakter uzunluğunda olması gerektiğini ve yalnızca sayı ve küçük harf kullan gerektiğini söyleyen bir ileti alırsınız. Sağlanan ön ek bu gereksinimi karşılamadı. Bu hata kodu hakkında daha fazla bilgi için bkz. Depolama hesabı adlarına ilişkin hataları düzeltme.

Hata kontrol öncesi sırasında yaka olduğundan, tarihte hiçbir dağıtım yoktur.

Geçmiş dağıtıma sahip değilken portalın ekran görüntüsü.

Ancak başarısız dağıtım Etkinlik Günlüğü'ne kaydedilir.

Hatayla birlikte etkinlik günlüğünün ekran görüntüsü.

Hata iletisini görmek için günlük girişinin ayrıntılarını açabilirsiniz.

Dağıtım hatasını düzeltme

Dosyayı yeniden dağıtacak ve ad ön eki parametresi için izin verilen bir değer sağlayacaksınız.

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

Dağıtım başlar ancak sanal ağın bulunamadığına bir iletiyle başarısız olur. Genellikle, bu hatayı kaynağa başvuru değiştirerek düzeltebilirsiniz. Bu hızlı başlangıçta başvuru silinecek. Bu hata kodu hakkında daha fazla bilgi için bkz. Kaynak bulunamadı hatalarını çözümleme.

Portalda dağıtımın tarihte göründüğüne dikkat edin.

Portalda dağıtım geçmişinin ekran görüntüsü.

Hatayla ilgili ayrıntıları almak için dağıtım geçmişinde girdiyi açabilirsiniz. Hata etkinlik günlüğünde de mevcuttur.

Bicep dosyası, kaynak grubu içinde mevcut olmayan bir sanal ağa başvurur. Hatayı düzeltmek için mevcut sanal ağa başvuru silin.

@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: {}
}

output storageAccountName string = storageAccountName

Bu Bicep dosyasını herhangi bir hata olmadan dağıtabilirsiniz.

Kaynakları temizleme

Azure kaynaklarına artık ihtiyaç kalmadan kaynak grubunu silin. Kaynak grubunu portaldan veya Cloud Shell silebilirsiniz.

az group delete --name troubleshootRG

Kaynak grubunu portaldan silmek için şu adımları izleyin:

  1. Giriş Azure portal arama kutusuna Kaynak grupları yazın.
  2. Ad alanına göre filtrele alanına kaynak grubu adını girin.
  3. Kaynak grubu adını seçin.
  4. Kaynak grubunu sil'i seçin.
  5. Silme işlemini onaylamak için kaynak grubu adını girin ve Sil'i seçin.

Sonraki adımlar

Bu hızlı başlangıçta, Bicep dosyası dağıtım hatalarını gidermeyi öğrendiniz.