Partager via


Activer la journalisation du débogage

Pour résoudre une erreur de déploiement, vous pouvez activer la journalisation du débogage pour obtenir plus d’informations. La journalisation de débogage fonctionne pour les déploiements effectués avec des fichiers Bicep ou des modèles Azure Resource Manager (modèles ARM). Vous pouvez obtenir des données sur la demande et la réponse d’un déploiement pour découvrir la cause d’un problème.

Avertissement

La journalisation de débogage peut exposer des secrets tels que des mots de passe ou des opérations listKeys. Activez uniquement l’enregistrement de débogage lorsque vous devez résoudre une erreur de déploiement. Une fois le débogage terminé, vous devez supprimer l’historique du déploiement de débogage.

Configurer l’enregistrement de débogage

Utilisez Azure PowerShell pour activer la journalisation de débogage qui remplit les propriétés request et response avec les informations de déploiement pour la résolution des problèmes. La journalisation du débogage ne peut pas être activée à l’aide d’Azure CLI.

La journalisation de débogage n’est activée que pour le modèle ARM principal ou le fichier Bicep. Si vous utilisez des modèles ARM imbriqués ou des modules Bicep, consultez Déboguer les modèles imbriqués.

Pour un déploiement de groupe de ressources, utilisez New-AzResourceGroupDeployment et définissez le DeploymentDebugLogLevel paramètre sur All, ResponseContentou RequestContent.

Lorsque la journalisation du débogage est activée, un avertissement s’affiche : des secrets tels que des mots de passe ou des opérations listKeys peuvent être enregistrés et affichés lorsque vous utilisez des commandes comme Get-AzResourceGroupDeploymentOperation pour obtenir des informations sur les opérations de déploiement.

New-AzResourceGroupDeployment `
  -Name exampledeployment `
  -ResourceGroupName examplegroup `
  -TemplateFile main.bicep `
  -DeploymentDebugLogLevel All

La sortie du déploiement affiche le niveau de journalisation de débogage.

DeploymentDebugLogLevel : RequestContent, ResponseContent

Le DeploymentDebugLogLevel paramètre est disponible pour d’autres étendues de déploiement : abonnement, groupe d’administration et locataire.

Obtenir des informations de débogage

Une fois la journalisation du débogage activée, vous pouvez obtenir plus d’informations sur les opérations de déploiement. Les applets de commande Azure PowerShell pour les opérations de déploiement ne produisent pas les propriétés request et response. Vous devez utiliser Azure CLI pour obtenir les informations de ces propriétés.

Si vous n’activez pas la journalisation du débogage à partir de la commande de déploiement, vous pouvez toujours obtenir des informations sur les opérations de déploiement. Utilisez Azure PowerShell ou Azure CLI pour obtenir le code d’état, le message d’état et l’état d’approvisionnement.

Pour déployer un groupe de ressources, utilisez Get-AzResourceGroupDeploymentOperation pour obtenir les opérations de déploiement.

Get-AzResourceGroupDeploymentOperation `
  -DeploymentName exampledeployment `
  -ResourceGroupName examplegroup

Vous pouvez spécifier une propriété, par exemple StatusCode, StatusMessageou ProvisioningState pour filtrer la sortie.

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

Pour plus d’informations, consultez la documentation relative aux étendues des opérations de déploiement : abonnement, groupe d’administration et locataire.

Déboguer un modèle imbriqué

Le modèle ARM principal et les modèles imbriqués ont leur propre nom de déploiement et leur propre historique de déploiement. Le fichier et le module Bicep principaux utilisent également un nom de déploiement et un historique de déploiement distincts.

Modèle ARM

Pour journaliser les informations de débogage d’un modèle ARM imbriqué, utilisez Microsoft.Resources/deployments avec la propriété debugSetting.

L'exemple suivant montre un modèle imbriqué avec le debugSetting pour journaliser la requête et la réponse du déploiement.

"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"
      }
    }
  }
],

Le modèle ARM principal et les modèles imbriqués ont leur propre nom de déploiement et leur propre historique de déploiement. Si vous souhaitez que les propriétés request et response contiennent des informations de résolution des problèmes, tenez compte des scénarios de déploiement suivants :

  • Les propriétés request et response contiennent les valeurs null pour le modèle principal et le modèle imbriqué lorsque DeploymentDebugLogLevel n'est pas activé avec la commande de déploiement.
  • Lorsque la commande de déploiement permet les propriétés DeploymentDebugLogLevel et request, celles-ci contiennent des informations uniquement pour le modèle principal. Les propriétés du modèle imbriqué contiennent des null valeurs.
  • Lorsqu'un modèle imbriqué utilise debugSetting et que la commande de déploiement n'inclut pas DeploymentDebugLogLevel, seul le déploiement du modèle imbriqué a des valeurs pour les propriétés request et response. Les propriétés du modèle principal contiennent des null valeurs.
  • Pour obtenir le request pour le modèle principal et le response pour le modèle imbriqué, spécifiez DeploymentDebugLogLevel dans la commande de déploiement et utilisez debugSetting dans le modèle imbriqué.

Fichier Bicep

La recommandation pour les fichiers Bicep est d’utiliser des modules plutôt que des modèles imbriqués avec Microsoft.Resources/deployments. Le message d’état, le code d’état et l’état d’approvisionnement incluent des informations pour le fichier et le module Bicep principaux que vous pouvez utiliser pour résoudre les problèmes de déploiement.

Si vous activez DeploymentDebugLogLevel dans la commande de déploiement, les propriétés request et response ne contiendront des informations que pour le déploiement du fichier Bicep principal.

Supprimer l’historique de déploiement de débogage

Une fois le débogage terminé, vous devez supprimer l’historique de déploiement pour empêcher toute personne ayant accès à des informations sensibles qui ont pu être journalisées. Pour chaque nom de déploiement que vous avez utilisé lors du débogage, exécutez la commande pour supprimer l’historique du déploiement.

Pour supprimer l’historique de déploiement d’un déploiement de groupe de ressources, utilisez Remove-AzResourceGroupDeployment.

Remove-AzResourceGroupDeployment -ResourceGroupName examplegroup -Name exampledeployment

La commande retourne True quand elle réussit.

Pour plus d’informations sur l’historique de déploiement, consultez la documentation relative aux étendues de déploiement : abonnement, groupe d’administration et locataire.

Étapes suivantes