Hızlı Başlangıç: ARM şablonu dağıtım sorunlarını giderme

Bu hızlı başlangıçta şablon (ARM şablonu) Azure Resource Manager sorunlarının nasıl giderilir? Hatalarla birlikte bir şablon ayaracak ve hataları nasıl düzelteceklerini öğ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.

Önkoşullar

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

Hatalarla şablon oluşturma

Aşağıdaki şablonu 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.json adını verdiyebilirsiniz ancak istediğiniz adı kullanabilirsiniz.

{
  "$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')]"
    }
  }
}

Doğrulama hatasını düzeltme

Dosyayı dosyanın içinde Visual Studio Code. altındaki dalgalı çizgi parameterss: bir hata gösterir. Doğrulama hatasını görmek için hatanın üzerine gelin.

Visual Studio Code'da şablon doğrulama hatasının ekran görüntüsü.

ve tanımlanmamış parametre variables resources başvurusu hatalarının olduğunu fark edersiniz. Şablonun doğrulama hatalarını görüntülemek için Sorunları Görüntüle'yi > seçin.

Tanımlanmamış Visual Studio Code hataları gösteren uygulamanın ekran görüntüsü.

Tüm hatalara öğe adının yanlış yazımı neden olur.

"parameterss": {

Hata iletisinde Şablon doğrulaması başarısız oldu: 'Template' türünde nesnede 'parameters' üyesi bulunamadı. Yol 'parametreler', satır 4, konum 16.

Parametreler için ARM şablonu söz dizimi, bunun parameters doğru öğe adı olduğunu gösterir.

Doğrulama hatasını ve tanımsız parametre başvuru hatalarını düzeltmek için yazımını düzeltin ve dosyayı kaydedin.

"parameters": {

Kontrol öncesi hatasını düzeltme

Bir kontrol öncesi doğrulama hatası oluşturmak için parametresi için yanlış bir değer prefixName kullanırsınız.

Bu hızlı başlangıçta kaynak grubu adı için troubleshootRG 2 leri kullandınız ancak istediğiniz adı kullanabilirsiniz.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.json \
  --parameters prefixName=long!!StoragePrefix

Şablon, kontrol öncesi doğrulamayı başarısız olur ve dağıtım çalıştırmaz. , prefixName 11 karakterden fazladır ve özel karakterler ve büyük harfler içerir.

Depolama 3 ile 24 karakter arasında olmalı ve yalnızca küçük harf ve rakam kullanmalıdır. Ön ek değeri geçersiz bir depolama adı oluşturdu. Daha fazla bilgi için bkz. Depolama hesabı adı hatalarını düzeltme. Kontrol öncesi hatasını düzeltmek için 11 veya daha az karakter içeren ve yalnızca küçük harf veya sayı içeren bir ön ek kullanın.

Dağıtım çalıştırılamamıştır çünkü dağıtım geçmişi yoktur.

Kontrol öncesi hatası için dağıtım olmadığını gösteren kaynak grubuna genel bakış ekran görüntüsü.

Etkinlik günlüğü, kontrol öncesi hatasını gösterir. Hatanın ayrıntılarını görmek için günlüğü seçin.

Kontrol öncesi hatasını alan kaynak grubu etkinlik günlüğünün ekran görüntüsü.

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

Dağıtımı gibi geçerli bir ön ek değeriyle storage çalıştırın.

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

Dağıtım başlar ve dağıtım geçmişinde görünür. Dağıtım başarısız olur outputs çünkü kaynak grubunda mevcut olmayan bir sanal ağa başvurur. Ancak, depolama hesabında hata yoktu, bu nedenle kaynak dağıtıldı. Dağıtım geçmişi başarısız bir dağıtımı gösterir.

Başarısız dağıtımı gösteren kaynak grubuna genel bakış ekran görüntüsü.

Dağıtım hatasını düzeltmek için başvuru işlevini geçerli bir kaynak kullanmak üzere değiştirebilirsiniz. Daha fazla bilgi için bkz. Kaynak bulunamadı hatalarını çözümleme. Bu hızlı başlangıç için önünde ve tüm vnetResult virgülleri vnetResult silin. Dosyayı kaydedin ve dağıtımı yeniden çalıştırma.

"vnetResult": {
  "type": "object",
  "value": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'doesnotexist'), '2021-03-01', 'Full')]"
}

Doğrulama, kontrol öncesi ve dağıtım hataları düzeltildikten sonra, aşağıdaki şablon bir depolama hesabı dağıtır. Dağıtım geçmişi ve etkinlik günlüğü başarılı bir dağıtım gösterir.

{
  "$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')]"
    }
  }
}

Kaynakları temizleme

Azure kaynaklarına artık ihtiyaç kalmadan kaynak grubunu silin.

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 ARM şablonu dağıtım hatalarını gidermeyi öğrendiniz.