Condividi tramite


Guida di avvio rapido - Risoluzione dei problemi relativi alle distribuzioni JSON dei modelli ARM

Questa guida di avvio rapido spiega come risolvere gli errori nella distribuzione JSON del modello di Azure Resource Manager (modello di ARM). Si dovrà configurare un modello con errori per apprendere come correggerli.

Un modello di Azure Resource Manager è un file JSON (JavaScript Object Notation) che definisce l'infrastruttura e la configurazione del progetto. Il modello utilizza la sintassi dichiarativa. Si descrive la distribuzione prevista senza scrivere la sequenza di comandi di programmazione necessari 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, ad esempio Visual Studio Code, è in grado di identificare questi errori.
  • Gli errori di convalida preliminare si verificano quando si esegue 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 rilevati soltanto valutando lo stato di avanzamento della distribuzione nell'ambiente di 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 di avvio rapido sono richiesti:

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 questa guida di avvio rapido si presume che il file sia stato denominato troubleshoot.json, ma è 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')]"
    }
  }
}

Correggere un errore di convalida

Aprire il file in Visual Studio Code. La linea ondulata sotto parameterss: indica la presenza di un errore. Per visualizzare l'errore di convalida, passare il puntatore del mouse sull'errore.

Screenshot di Visual Studio Code che evidenzia un errore di convalida del modello con una riga ondulata rossa sotto l'errore di ortografia

Si noterà che a variables e resources sono associati errori di riferimento parametro non definito. Per visualizzare gli errori di convalida del modello, selezionare Visualizza>problemi.

Screenshot di Visual Studio Code che mostra la scheda Problemi che elenca gli errori di riferimento ai parametri non definiti per le sezioni 'variables' e 'resources'.

Tutti gli errori sono causati dall'ortografia errata del nome di un elemento.

"parameterss": {

Il messaggio di errore indica 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 ARM per i parametri mostra che parameters è il nome dell'elemento corretto.

Per risolvere l'errore di convalida e gli errori di riferimento parametro non definiti, correggere l'ortografia e salvare il file.

"parameters": {

Correggere un errore preliminare

Per creare un errore di convalida preliminare, si dovrà usare un valore errato per il parametro prefixName.

In questa guida di avvio rapido si utilizza troubleshootRG come 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 a completare la convalida preliminare e la distribuzione non viene eseguita. prefixName contiene più di 11 caratteri e include caratteri speciali e lettere maiuscole.

I nomi di archiviazione devono avere una lunghezza compresa tra 3 e 24 caratteri e includere 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 di 11 caratteri o meno e che includa solo lettere minuscole o numeri.

Poiché la distribuzione non è stata eseguita, la cronologia di distribuzione non esiste.

Screenshot della pagina di panoramica del gruppo di risorse di Azure che mostra una sezione della cronologia di distribuzione vuota a causa di un errore preliminare.

Il log attività mostra l'errore preliminare. Selezionare il log per visualizzare i dettagli dell'errore.

Screenshot del log attività del gruppo di risorse di Azure che mostra una voce di errore preliminare con un'icona punto esclamativo rosso.

Correggere l'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 viene avviata ed è visibile nella cronologia di distribuzione. La distribuzione non viene completata 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 di distribuzione mostra una distribuzione non riuscita.

Screenshot della pagina di panoramica del gruppo di risorse di Azure che mostra una distribuzione non riuscita con un'icona punto esclamativo rosso nella sezione cronologia della distribuzione.

Per correggere l'errore di distribuzione, modificare la funzione di riferimento per usare una risorsa valida. Per altre informazioni, vedere Risolvere gli errori di risorsa non trovata. Per questa guida di avvio rapido, eliminare la virgola che precede vnetResult e tutti i file vnetResult Salvare il file ed eseguire nuovamente la distribuzione.

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

Dopo la correzione degli errori di convalida, preliminari e di distribuzione, il modello seguente distribuisce un account di archiviazione. La cronologia di distribuzione e il log attività indicano che la distribuzione è stata eseguita correttamente.

{
  "$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, effettuare i passaggi riportati di seguito:

  1. Nel portale di Azure immettere Gruppi di risorse nella casella di ricerca.
  2. Immettere il nome del gruppo di risorse nel campo Filtra per nome.
  3. Selezionare il nome del gruppo di risorse.
  4. Selezionare Elimina gruppo di risorse.
  5. Per confermare l'eliminazione, immettere il nome del gruppo di risorse e selezionare Elimina.

Passaggi successivi

Grazie a questa guida di avvio rapido è stato possibile apprendere come risolvere gli errori nelle distribuzioni dei modelli di ARM.