Abilitazione della registrazione di debug

Per risolvere un errore di distribuzione, è possibile abilitare la registrazione di debug per ottenere altre informazioni. La registrazione di debug funziona per le distribuzioni con i file Bicep o i modelli di Azure Resource Manager (modelli di Resource Manager). È possibile ottenere dati sulla richiesta e sulla risposta di una distribuzione per apprendere la causa di un problema.

Avviso

La registrazione di debug può esporre segreti come password o listKeys operazioni. Abilitare solo la registrazione del debug quando è necessario risolvere un errore di distribuzione. Al termine del debug, è necessario rimuovere la cronologia della distribuzione di debug.

Configurare la registrazione di debug

Usare Azure PowerShell per abilitare la registrazione di debug che popola le request proprietà e response con le informazioni sulla distribuzione per la risoluzione dei problemi. Impossibile abilitare la registrazione di debug usando l'interfaccia della riga di comando di Azure.

La registrazione di debug è abilitata solo per il modello arm principale o per il file Bicep. Se si usano modelli di Resource Manager annidati o moduli Bicep, vedere Eseguire il debug del modello annidato.

Per una distribuzione di un gruppo di risorse, usare New-AzResourceGroupDeployment e impostare il DeploymentDebugLogLevel parametro su All, ResponseContento RequestContent.

Quando la registrazione di debug è abilitata, viene visualizzato un avviso che i segreti come password o listKeys operazioni possono essere registrati e 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 del debug.

DeploymentDebugLogLevel : RequestContent, ResponseContent

Il DeploymentDebugLogLevel parametro è disponibile per altri ambiti di distribuzione: sottoscrizione, gruppo di gestione e tenant.

Ottenere informazioni di debug

Dopo aver abilitato la registrazione del debug, è possibile ottenere altre informazioni sulle operazioni di distribuzione. I cmdlet di Azure PowerShell per le operazioni di distribuzione non generano l'output delle request proprietà eresponse. È necessario usare l'interfaccia della riga di comando di Azure per ottenere le informazioni da tali proprietà.

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 di provisioning.

Per una 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, StatusMessageo ProvisioningState per filtrare l'output.

(Get-AzResourceGroupDeploymentOperation `
  -DeploymentName exampledeployment `
  -ResourceGroupName examplegroup).StatusCode

Per altre informazioni, vedere la documentazione per gli ambiti dell'operazione di distribuzione: sottoscrizione, gruppo di gestione e tenant.

Eseguire il debug del modello annidato

Il modello arm principale e i modelli annidati hanno la propria cronologia di distribuzione e distribuzione. Il file e il modulo Bicep principali usano anche un nome di distribuzione e una cronologia di distribuzione separati.

Modello ARM

Per registrare le informazioni di debug per un modello arm annidato , usare Microsoft.Resources/distribuzioni con la debugSetting proprietà .

L'esempio seguente mostra un modello annidato con debugSetting cui registrare la richiesta e la risposta della 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 arm principale e i modelli annidati hanno la propria cronologia di distribuzione e distribuzione. Se si desidera che le request proprietà e response contengano informazioni sulla risoluzione dei problemi, tenere presente gli scenari di distribuzione seguenti:

  • Le request proprietà e response contengono null valori per il modello principale e il modello annidato quando DeploymentDebugLogLevel non è abilitato con il comando di distribuzione.
  • Quando il comando di distribuzione abilita DeploymentDebugLogLevel le request proprietà e response contiene informazioni solo per il modello principale. Le proprietà del modello annidate contengono null valori.
  • Quando un modello annidato usa e debugSetting il comando di distribuzione non include DeploymentDebugLogLevel solo la distribuzione del modello annidata ha valori per le request proprietà e response . Le proprietà del modello principale contengono null valori.
  • Per ottenere il requestresponse modello principale e il modello annidato, specificare DeploymentDebugLogLevel nel comando di distribuzione e usare debugSetting nel modello annidato.

File Bicep

La raccomandazione per i file Bicep consiste nell'usare i moduli anziché i modelli annidati con Microsoft.Resources/deployments. Il messaggio di stato, il codice di stato e lo stato di provisioning includono informazioni per il file e il modulo Bicep principale che è possibile usare per risolvere i problemi della distribuzione.

Se si abilita DeploymentDebugLogLevel dal comando di distribuzione, le request proprietà e response contengono informazioni solo per la distribuzione del file Bicep principale.

Rimuovere la cronologia della distribuzione di debug

Al termine del debug, è necessario rimuovere la cronologia di distribuzione per impedire a chiunque abbia accesso di visualizzare informazioni riservate che potrebbero essere state registrate. Per ogni nome di distribuzione usato durante il debug, eseguire il comando per rimuovere la cronologia della distribuzione.

Per rimuovere la cronologia di distribuzione per una distribuzione di un gruppo di risorse, usare Remove-AzResourceGroupDeployment.

Remove-AzResourceGroupDeployment -ResourceGroupName examplegroup -Name exampledeployment

Il comando restituisce True quando ha esito positivo.

Per altre informazioni sulla cronologia della distribuzione, vedere la documentazione per gli ambiti di distribuzione: sottoscrizione, gruppo di gestione e tenant.

Passaggi successivi