Avvio rapido: Risolvere i problemi relativi alle distribuzioni di file Bicep
Questa guida introduttiva descrive come risolvere gli errori di distribuzione dei file Bicep. Si creerà un file con errori e si apprenderà come correggere gli errori.
Alla distribuzione sono correlati tre tipi di errori:
- Gli errori di convalida si verificano prima dell'inizio di una distribuzione e vengono 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. Un file Bicep con errori di sintassi non viene compilato in JSON e non viene visualizzato nel log attività.
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 l'estensione Bicep più recente.
- Versione più recente di Azure PowerShell o dell'interfaccia della riga di comando di Azure.
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. Questo argomento di avvio rapido presuppone che sia stato denominato il file troubleshoot.bicep , ma è possibile assegnargli 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
Correzione dell'errore di convalida
Aprire il file in Visual Studio Code. Si noterà che Visual Studio Code identifica un errore di sintassi. La prima dichiarazione di parametro è contrassegnata con squiggles rosso per indicare un errore.
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.
Il messaggio indica che questo tipo di dichiarazione non viene 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 per una dichiarazione di parametro, verrà visualizzata la parola chiave param
. Quando si modifica tale sintassi, l'errore di convalida scompare. Il @allowed
decorator è stato contrassegnato anche come errore, ma tale errore viene risolto modificando la dichiarazione dei parametri. Il decorator è stato contrassegnato come errore perché prevede una dichiarazione di parametro dopo il decorator. Questa condizione non è vera quando la dichiarazione non è corretta.
La linea fissa è:
param storageAccountType string = 'Standard_LRS'
Correzione dell'errore preliminare
Dopo aver risolto l'errore di convalida, è ora di distribuire il file. Tuttavia, si fornirà 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. Non tenta la distribuzione.
Viene visualizzato un messaggio di errore che indica che la convalida preliminare non è riuscita. Viene visualizzato anche un messaggio che indica che il nome dell'account di archiviazione deve essere compreso tra 3 e 24 caratteri in lunghezza e usare numeri e lettere minuscole solo. Il prefisso specificato non soddisfava tale requisito. Per altre informazioni su questo codice di errore, vedere Risolvere gli errori per i nomi degli account di archiviazione.
Poiché l'errore è stato rilevato in fase preliminare, non esiste alcuna distribuzione nella cronologia.
Tuttavia, la distribuzione non riuscita esiste nel log attività.
È possibile aprire i dettagli della voce di log per visualizzare il messaggio di errore.
Correzione dell'errore di distribuzione
Si distribuirà di nuovo il file e si fornirà 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 inizia ma non riesce con un messaggio che la rete virtuale non è stata trovata. In genere, si corregge questo errore modificando il riferimento alla risorsa. In questa guida introduttiva si eliminerà il riferimento. Per altre informazioni su questo codice di errore, vedere Risolvere gli errori trovati nella risorsa.
Si noti nel portale che la distribuzione viene visualizzata nella cronologia.
È possibile aprire la voce nella cronologia della distribuzione per ottenere informazioni dettagliate sull'errore. L'errore esiste 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, seguire questa procedura:
- Nella portale di Azure immettere Gruppi di risorse nella casella di ricerca.
- Nel campo Filtro 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 file Bicep.