Guida di avvio rapido - Risolvere i problemi relativi alle distribuzioni con file Bicep

Questa guida di avvio rapido descrive come risolvere i problemi di distribuzione con file Bicep. Si dovrà creare un file con gli errori per apprendere come correggerli.

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. Un file Bicep con errori di sintassi non viene compilato in JSON e non viene visualizzato nel log attività.

Prerequisiti

Per completare questa guida di avvio rapido sono richiesti:

Creare un file Bicep con errori

Copiare il file Bicep 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.bicep, ma è possibile usare qualsiasi nome.

@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

Correggere un errore di convalida

Aprire il file in Visual Studio Code. Si noterà che Visual Studio Code identifica un errore di sintassi. La prima dichiarazione del parametro è contrassegnata con sottolineature ondulata rosse per indicare un errore.

Screenshot of Visual Studio Code with red squiggles highlighting a syntax error in a Bicep file.

Le righe contrassegnate con un errore sono:

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

Quando si passa il puntatore del mouse su parameter, viene visualizzato un messaggio di errore.

Screenshot of a detailed error message displayed in Visual Studio Code when hovering over a syntax error in a Bicep file.

Il messaggio indica: Il tipo di dichiarazione non è stato riconosciuto. Specificare un parametro, una variabile, una risorsa o una dichiarazione di output. Se si tenta di distribuire questo file, verrà visualizzato lo stesso messaggio di errore dal comando di distribuzione.

Se si esamina la documentazione relativa alla dichiarazione del parametro, si vedrà che la parola chiave è effettivamente param. Quando si modifica tale sintassi, l'errore di convalida scompare. Anche l'elemento decorator @allowed è stato contrassegnato come errore, ma è anche possibile risolverlo modificando la dichiarazione del parametro. L'elemento decorator è stato contrassegnato come errore perché prevede una dichiarazione del parametro dopo l'elemento decorator. Questa condizione non era vera quando la dichiarazione era errata.

La riga corretta è:

param storageAccountType string = 'Standard_LRS'

Correggere un errore preliminare

Ora che l'errore di convalida è stato corretto, è possibile distribuire il file. Tuttavia, deve essere specificato un valore di parametro non valido per visualizzare un errore preliminare.

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 determina che il nome dell'account di archiviazione contiene caratteri non consentiti. Pertanto non tenta la distribuzione.

Viene visualizzato un messaggio di errore che indica che la convalida preliminare non è riuscita. Il nome dell'account di archiviazione deve avere una lunghezza compresa tra 3 e 24 caratteri e deve contenere solo numeri e lettere minuscole. Il prefisso specificato non soddisfa tale requisito. Per altre informazioni su questo codice di errore, vedere Risolvere gli errori relativi ai nomi degli account di archiviazione.

Poiché l'errore è stato rilevato in fase preliminare, non esiste alcuna distribuzione nella cronologia.

Screenshot of Azure portal's deployment history section showing no deployments for a Bicep file.

Tuttavia, la distribuzione non riuscita è presente nel log attività.

Screenshot of Azure portal's activity log displaying a preflight validation error for a Bicep file deployment.

È possibile aprire i dettagli della voce del log per visualizzare il messaggio di errore.

Correggere l'errore di distribuzione

Sarà possibile distribuire nuovamente il file specificando un valore consentito per il parametro del prefisso del nome.

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

La distribuzione viene avviata ma non viene completata e viene visualizzato un messaggio che indica che la rete virtuale non è stata trovata. Solitamente, è possibile correggere l'errore modificando il riferimento alla risorsa. In questa guida di avvio rapido il riferimento verrà eliminato. Per altre informazioni su questo codice di errore, vedere Risolvere gli errori di risorsa non trovata.

Nel portale si può notare che la distribuzione viene visualizzata nella cronologia.

Screenshot of Azure portal's deployment history section showing a failed deployment for a Bicep file.

È possibile aprire la voce nella cronologia di distribuzione per ottenere informazioni dettagliate sull'errore. L'errore è presente anche nel log attività.

Il file Bicep tenta di fare riferimento a una rete virtuale che non esiste nel gruppo di risorse. Eliminare il riferimento alla rete virtuale esistente per correggere l'errore.

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
param 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

È possibile distribuire il file Bicep senza errori.

Pulire le risorse

Quando le risorse di Azure non sono più necessarie, eliminare il gruppo di risorse. È possibile eliminare il gruppo di risorse da Cloud Shell o dal portale.

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 file Bicep.