Abilitazione della registrazione di debug
Per risolvere un errore di distribuzione, è possibile abilitare la registrazione del debug per ottenere maggiori informazioni. La registrazione del debug funziona per le distribuzioni con file Bicep o modelli di Azure Resource Manager (modelli di ARM). Per conoscere la causa del problema, è possibile ottenere i dati sulla richiesta e sulla risposta di una distribuzione.
Avviso
La registrazione di debug potrebbe esporre segreti quali password od operazionilistKeys
. Abilitare la registrazione di debug soltanto quando si deve risolvere un errore di distribuzione. Al termine del debug, è necessario rimuovere la cronologia di distribuzione di debug.
Configurare la registrazione di debug
Usare Azure PowerShell per abilitare la registrazione di debug che popola le proprietà request
e response
con informazioni sulla distribuzione per la risoluzione dei problemi. La registrazione di debug non può essere abilitata tramite l'interfaccia della riga di comando di Azure.
La registrazione di debug è abilitata solo per il modello di ARM o il file Bicep principale. Se si usano modelli di ARM o moduli Bicep annidati, vedere Eseguire il debug di un modello annidato.
Per la distribuzione di un gruppo di risorse, usare New-AzResourceGroupDeployment e impostare il parametro DeploymentDebugLogLevel
su All
, ResponseContent
o RequestContent
.
Se la registrazione di debug è abilitata, viene visualizzato un avviso che indica che segreti come password od operazioni listKeys
possono essere registrati o visualizzati quando si usano comandi come Get-AzResourceGroupDeploymentOperation
per ottenere informazioni sulle operazioni di distribuzione.
New-AzResourceGroupDeployment `
-Name exampledeployment `
-ResourceGroupName examplegroup `
-TemplateFile main.bicep `
-DeploymentDebugLogLevel All
L'output della distribuzione mostra il livello di registrazione di debug.
DeploymentDebugLogLevel : RequestContent, ResponseContent
Il parametro DeploymentDebugLogLevel
è disponibile per altri ambiti di distribuzione: sottoscrizione, gruppo di gestione e tenant.
Ottenere le informazioni di debug
Dopo aver abilitato la registrazione di debug, è possibile ottenere altre informazioni sulle operazioni di distribuzione. I cmdlet di Azure PowerShell per le operazioni di distribuzione non generano l’output delle proprietà request
e response
. Per ottenere le informazioni da tali proprietà, è necessario usare l'interfaccia della riga di comando di Azure.
Se non si abilita la registrazione di debug dal comando di distribuzione, è comunque possibile ottenere informazioni sulle operazioni di distribuzione. Usare Azure PowerShell o l'interfaccia della riga di comando di Azure per ottenere il codice di stato, il messaggio di stato e lo stato provisioning.
Per la distribuzione di un gruppo di risorse, usare Get-AzResourceGroupDeploymentOperation per ottenere le operazioni di distribuzione.
Get-AzResourceGroupDeploymentOperation `
-DeploymentName exampledeployment `
-ResourceGroupName examplegroup
È possibile specificare una proprietà, ad esempio StatusCode
, StatusMessage
o ProvisioningState
per filtrare l'output.
(Get-AzResourceGroupDeploymentOperation `
-DeploymentName exampledeployment `
-ResourceGroupName examplegroup).StatusCode
Per altre informazioni, vedere la documentazione relativa agli ambiti dell'operazione di distribuzione: sottoscrizione, gruppo di gestione e tenant.
Eseguire il debug di un modello annidato
Il modello di ARM principale e i modelli annidati hanno un proprio nome di distribuzione e una propria cronologia di distribuzione. Il file e il modulo Bicep principali usano anche un nome distribuzione e una cronologia di distribuzione separati.
Modello ARM
Per registrare le informazioni di debug per un modello di ARM annidato, usare Microsoft.Resources/deployments con la proprietà debugSetting
.
L'esempio seguente illustra un modello annidato con debugSetting
per registrare la richiesta e la risposta di distribuzione.
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedTemplateDebug",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-05-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2"
}
]
},
"debugSetting": {
"detailLevel": "requestContent, responseContent"
}
}
}
],
Il modello di ARM principale e i modelli annidati hanno un proprio nome di distribuzione e una propria cronologia di distribuzione. Se si desidera che le proprietà request
e response
contengano informazioni sulla risoluzione dei problemi, tenere presenti gli scenari di distribuzione riportati di seguito:
- Le proprietà
request
eresponse
contengono valorinull
per il modello principale e il modello annidato seDeploymentDebugLogLevel
non viene abilitato con il comando di distribuzione. - Quando il comando di distribuzione abilita le proprietà
DeploymentDebugLogLevel
, le proprietàrequest
eresponse
contengono informazioni solo per il modello principale. Le proprietà del modello annidato contengono valorinull
. - Quando un modello annidato usa
debugSetting
e il comando di distribuzione non includeDeploymentDebugLogLevel
, solo la distribuzione del modello annidato possiede valori per le proprietàrequest
eresponse
. Le proprietà del modello principale contengono valorinull
. - Per ottenere
request
eresponse
per il modello principale e il modello annidato, specificareDeploymentDebugLogLevel
nel comando di distribuzione e usaredebugSetting
nel modello annidato.
distribuibile
Per i file Bicep si è consigliabile usare i moduli anziché modelli annidati con Microsoft.Resources/deployments
. Il messaggio di stato, il codice di stato e lo stato provisioning includeranno informazioni per il file e il modulo Bicep principali che si possono utilizzare per risolvere i problemi di distribuzione.
Se si abilita DeploymentDebugLogLevel
dal comando di distribuzione, le proprietà request
e response
contengono informazioni solo per la distribuzione del file Bicep principale.
Rimuovere la cronologia di distribuzione di debug
Al termine del debug, è necessario rimuovere la cronologia di distribuzione per impedire a chi accede di visualizzare informazioni riservate che potrebbero essere state registrate. Per ogni nome di distribuzione usato durante il debug, eseguire il comando per eliminare la cronologia di distribuzione.
Per rimuovere la cronologia di distribuzione per la distribuzione di un gruppo di risorse, usare Remove-AzResourceGroupDeployment.
Remove-AzResourceGroupDeployment -ResourceGroupName examplegroup -Name exampledeployment
Il comando restituisce True
se l'operazione è stata completata.
Per altre informazioni sulla cronologia di distribuzione, vedere la documentazione relativa agli ambiti di distribuzione: sottoscrizione, gruppo di gestione e tenant.