Guida introduttiva: Risolvere i problemi relativi alle distribuzioni JSON del modello di Resource Manager
Questa guida introduttiva descrive come risolvere gli errori di distribuzione JSON del modello di Azure Resource Manager (modello di Resource Manager). Si configurerà un modello con errori e si apprenderà come correggere gli errori.
Un modello di Azure Resource Manager è un file JSON (JavaScript Object Notation) che definisce l'infrastruttura e la configurazione per il progetto. Il modello utilizza la sintassi dichiarativa. Si descrive la distribuzione prevista senza scrivere la sequenza di comandi di programmazione per creare la distribuzione.
Alla distribuzione sono correlati tre tipi di errori:
- Gli errori di convalida si verificano prima dell'inizio di una distribuzione e sono causati da errori di sintassi nel file. Un editor di codice come Visual Studio Code può identificare questi errori.
- Gli errori di convalida preliminare si verificano quando viene eseguito un comando di distribuzione, ma le risorse non vengono distribuite. Vengono rilevati senza avviare la distribuzione. Ad esempio, se un valore di parametro non è corretto, l'errore viene rilevato nella convalida preliminare.
- Gli errori di distribuzione si verificano durante il processo di distribuzione e possono essere trovati solo valutando lo stato di avanzamento della distribuzione nell'ambiente Azure.
Tutti i tipi di errore restituiscono un codice errore usato per risolvere i problemi della distribuzione. Gli errori preliminari e di convalida vengono visualizzati nel log attività ma non nella cronologia della distribuzione.
Prerequisiti
Per completare questa guida introduttiva, sono necessari gli elementi seguenti:
- Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
- Visual Studio Code con la versione più recente dell'estensione Strumenti di Azure Resource Manager.
- Installare la versione più recente di Azure PowerShell o dell'interfaccia della riga di comando di Azure.
Creare un modello con errori
Copiare il modello seguente e salvarlo in locale. Questo file verrà usato per risolvere un errore di convalida, un errore preliminare e un errore di distribuzione. In questo argomento di avvio rapido si presuppone che il file sia stato denominato troubleshoot.json , ma sia possibile usare qualsiasi nome.
{
"$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')]"
}
}
}
Correzione dell'errore di convalida
Aprire il file in Visual Studio Code. La linea ondulata sotto parameterss:
indica un errore. Per visualizzare l'errore di convalida, passare il puntatore del mouse sull'errore.
Si noterà che variables
e resources
si verificano errori per il riferimento ai parametri non definiti. Per visualizzare gli errori di convalida del modello, selezionare Visualizza>problemi.
Tutti gli errori sono causati dall'ortografia errata di un nome di elemento.
"parameterss": {
Il messaggio di errore indica che la convalida del modello non è riuscita: impossibile trovare il membro 'parameterss' nell'oggetto di tipo 'Template'. Percorso 'parameterss', riga 4, posizione 16.
La sintassi del modello di Resource Manager per i parametri mostra che parameters
è il nome dell'elemento corretto.
Per correggere l'errore di convalida e gli errori di riferimento ai parametri non definiti, correggere l'ortografia e salvare il file.
"parameters": {
Correzione dell'errore preliminare
Per creare un errore di convalida preliminare, si userà un valore non corretto per il prefixName
parametro .
Questa guida introduttiva usa troubleshootRG per il nome del gruppo di risorse, ma è possibile usare qualsiasi nome.
az group create --name troubleshootRG --location westus
az deployment group create \
--resource-group troubleshootRG \
--template-file troubleshoot.json \
--parameters prefixName=long!!StoragePrefix
Il modello non riesce la convalida preliminare e la distribuzione non viene eseguita. prefixName
è maggiore di 11 caratteri e contiene caratteri speciali e lettere maiuscole.
Archiviazione nomi devono essere compresi tra 3 e 24 caratteri e usare solo lettere minuscole e numeri. Il valore del prefisso ha creato un nome di archiviazione non valido. Per altre informazioni, vedere Risolvere gli errori relativi ai nomi degli account di archiviazione. Per correggere l'errore preliminare, usare un prefisso con 11 caratteri o meno e contiene solo lettere minuscole o numeri.
Poiché la distribuzione non è stata eseguita, non esiste alcuna cronologia di distribuzione.
Il log attività mostra l'errore preliminare. Selezionare il log per visualizzare i dettagli dell'errore.
Correzione dell'errore di distribuzione
Eseguire la distribuzione con un valore di prefisso valido, ad esempio storage
.
az group create --name troubleshootRG --location westus
az deployment group create \
--resource-group troubleshootRG \
--template-file troubleshoot.json \
--parameters prefixName=storage
La distribuzione inizia ed è visibile nella cronologia di distribuzione. La distribuzione non riesce perché outputs
fa riferimento a una rete virtuale che non esiste nel gruppo di risorse. Tuttavia, non si sono verificati errori per l'account di archiviazione, quindi la risorsa è stata distribuita. La cronologia della distribuzione mostra una distribuzione non riuscita.
Per correggere l'errore di distribuzione, modificare la funzione di riferimento per usare una risorsa valida. Per altre informazioni, vedere Risolvere gli errori relativi alla risorsa non trovata. Per questa guida introduttiva, eliminare la virgola che precede vnetResult
e tutti .vnetResult
Salvare il file ed eseguire di nuovo la distribuzione.
"vnetResult": {
"type": "object",
"value": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'doesnotexist'), '2021-03-01', 'Full')]"
}
Dopo la correzione degli errori di convalida, preliminare e distribuzione, il modello seguente distribuisce un account di archiviazione. La cronologia della distribuzione e il log attività mostrano una distribuzione corretta.
{
"$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')]"
}
}
}
Pulire le risorse
Quando le risorse di Azure non sono più necessarie, eliminare il gruppo di risorse.
az group delete --name troubleshootRG
Per eliminare il gruppo di risorse dal portale, seguire questa procedura:
- Nella portale di Azure immettere Gruppi di risorse nella casella di ricerca.
- Nel campo Filtra per nome immettere il nome del gruppo di risorse.
- Selezionare il nome del gruppo di risorse.
- Selezionare Elimina gruppo di risorse.
- Per confermare l'eliminazione, immettere il nome del gruppo di risorse e selezionare Elimina.
Passaggi successivi
In questa guida introduttiva si è appreso come risolvere gli errori di distribuzione dei modelli di Resource Manager.