Hızlı Başlangıç: ARM şablonu JSON dağıtımlarıyla ilgili sorunları giderme
Bu hızlı başlangıçta Azure Resource Manager şablonu (ARM şablonu) JSON dağıtım hatalarıyla ilgili sorunları giderme işlemi açıklanmaktadır. Hata içeren bir şablon ayarlayıp hataları düzeltmeyi öğreneceksiniz.
Azure Resource Manager şablonu, projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Bu şablonda, bildirim temelli sözdizimi kullanılır. Dağıtımı oluşturmak için programlama komutlarının sırasını yazmadan hedeflenen dağıtımınızı açıklarsınız.
Bir dağıtımla ilgili üçi tür hata vardır:
- Doğrulama hataları bir dağıtım başlamadan önce oluşur ve dosyanızdaki söz dizimi hatalarının neden olduğu durumlardır. Visual Studio Code gibi bir kod düzenleyicisi bu hataları tanımlayabilir.
- Dağıtım komutu çalıştırıldığında ancak kaynaklar dağıtılmadığında denetim öncesi doğrulama hataları oluşur. Bu hatalar dağıtım başlatılmadan bulunur. Örneğin, bir parametre değeri yanlışsa, hata denetim öncesi doğrulamada bulunur.
- Dağıtım hataları dağıtım işlemi sırasında oluşur ve yalnızca Azure ortamınızdaki dağıtımın ilerleme durumu değerlendirilerek 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 denetim öncesi hataları etkinlik günlüğünde gösterilir ancak dağıtım geçmişinizde görünmez.
Önkoşullar
Bu hızlı başlangıcı tamamlamak için aşağıdaki öğelere ihtiyacınız vardır:
- Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- En son Azure Resource Manager Araçları uzantısına sahip Visual Studio Code.
- Azure PowerShell veya Azure CLI'nın en son sürümünü yükleyin.
Hatalarla şablon oluşturma
Aşağıdaki şablonu kopyalayın ve yerel olarak kaydedin. Doğrulama hatası, denetim öncesi hatası ve dağıtım hatası sorunlarını gidermek için bu dosyayı kullanacaksınız. Bu hızlı başlangıçta, dosya troubleshoot.json adlandırdığınız ancak herhangi bir ad kullanabileceğiniz varsayılır.
{
"$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 hatalarını düzeltme
Dosyayı Visual Studio Code'da açın. altındaki parameterss:
dalgalı çizgi bir hatayı gösterir. Doğrulama hatasını görmek için, hatanın üzerine gelin.
Tanımlanmamış parametre başvurusu için ve resources
hatalarının olduğunu variables
fark edeceksiniz. Şablonun doğrulama hatalarını görüntülemek için Sorunları Görüntüle'yi>seçin.
Tüm hatalar bir öğe adının yanlış yazımı nedeniyle oluşur.
"parameterss": {
Hata iletisinde Şablon doğrulaması başarısız oldu: 'Template' türündeki nesnede 'parameterss' üyesi bulunamadı. Yol 'parametreler', satır 4, konum 16.
Parametreler için ARM şablonu söz dizimi doğru öğe adını gösterirparameters
.
Doğrulama hatasını ve tanımlanmamış parametre başvuru hatalarını düzeltmek için, yazımı düzeltin ve dosyayı kaydedin.
"parameters": {
Denetim öncesi hata düzeltmesi
Denetim öncesi doğrulama hatası oluşturmak için parametresi için prefixName
yanlış bir değer kullanacaksınız.
Bu hızlı başlangıçta kaynak grubu adı için troubleshootRG kullanılır, ancak herhangi bir 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 denetim öncesi doğrulamada başarısız oluyor ve dağıtım çalıştırılmıyor. prefixName
11 karakterden fazladır ve özel karakterler ve büyük harfler içerir.
Depolama adları 3 ile 24 karakter arasında olmalı ve yalnızca küçük harf ve sayı 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. Denetim öncesi hatasını düzeltmek için 11 karakter veya daha kısa bir ön ek kullanın ve yalnızca küçük harf veya sayı içerir.
Dağıtım çalışmadığından dağıtım geçmişi yoktur.
Etkinlik günlüğü denetim öncesi hatasını gösterir. Hatanın ayrıntılarını görmek için günlüğü seçin.
Dağıtım hatalarını düzeltme
Dağıtımı gibi storage
geçerli bir ön ek değeriyle ç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. Kaynak grubunda mevcut olmayan bir sanal ağa başvurduğunuz için outputs
dağıtım başarısız olur. Ancak, depolama hesabı için hata olmadığından kaynak dağıtıldı. Dağıtım geçmişi başarısız bir dağıtımı gösterir.
Dağıtım hatasını düzeltmek için başvuru işlevini geçerli bir kaynak kullanacak şekilde değiştirin. Daha fazla bilgi için bkz . Kaynak bulunamadı hatalarını çözme. Bu hızlı başlangıç için, önce vnetResult
gelen virgülünü ve tümünü vnetResult
silin. Dosyayı kaydedin ve dağıtımı yeniden çalıştırın.
"vnetResult": {
"type": "object",
"value": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'doesnotexist'), '2021-03-01', 'Full')]"
}
Doğrulama, denetim ö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 gerek kalmadığında kaynak grubunu silin.
az group delete --name troubleshootRG
Kaynak grubunu portaldan silmek için şu adımları izleyin:
- Azure portalında, arama kutusuna Kaynak grupları yazın.
- Ada göre filtrele alanına kaynak grubu adını girin.
- Kaynak grubu adını seçin.
- Kaynak grubunu sil'i seçin.
- 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.