Habilitar o log de depuração

Para solucionar um erro de implantação, você pode habilitar o log de depuração para obter mais informações. O log de depuração funciona para implantações com arquivos Bicep ou modelos do ARM (modelos do Azure Resource Manager). Você pode obter dados sobre a solicitação e a resposta de uma implantação para saber a causa de um problema.

Aviso

O registro em log de depuração poderá expor segredos, como senhas ou operações listKeys. A ocultação de um valor exato de um parâmetro seguro em uma mensagem de erro de implantação não garante que variantes transformadas ou derivadas desse valor sejam ocultadas. Habilite o log de depuração somente quando precisar solucionar um erro de implantação. Quando terminar de depurar, remova o histórico de implantação de depuração.

Configurar o log de depuração

Use o Azure PowerShell para habilitar o registro em log de depuração que preenche as propriedades request e response com as informações de implantação para a solução de problemas. O log de depuração não pode ser habilitado usando a CLI do Azure.

O log de depuração só está habilitado para o modelo principal do ARM ou arquivo Bicep. Se você estiver usando modelos do ARM aninhados ou módulos Bicep, consulte Depurar modelo aninhado.

Para uma implantação de grupo de recursos, use New-AzResourceGroupDeployment e defina o parâmetro DeploymentDebugLogLevel como All, ResponseContent ou RequestContent.

Quando o log de depuração está habilitado, é exibido um aviso de que segredos como senhas ou operações listKeys podem ser registrados e exibidos quando você usa comandos como Get-AzResourceGroupDeploymentOperation para obter informações sobre operações de implantação.

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

A saída da implantação mostra o nível de log de depuração.

DeploymentDebugLogLevel : RequestContent, ResponseContent

O DeploymentDebugLogLevel parâmetro está disponível para outros escopos de implantação: assinatura, grupo de gerenciamento e locatário.

Obter informações de depuração

Depois que o log de depuração estiver habilitado, você poderá obter mais informações sobre as operações de implantação. Os cmdlets do Azure PowerShell para operações de implantação não exibem as propriedades request e response. Você precisa usar a CLI do Azure para obter as informações dessas propriedades.

Se você não habilitar o log de depuração no comando de implantação, ainda poderá obter informações sobre operações de implantação. Use o Azure PowerShell ou a CLI do Azure para obter o código de status, a mensagem de status e o estado de provisionamento.

Para uma implantação de grupo de recursos, use Get-AzResourceGroupDeploymentOperation para obter operações de implantação.

Get-AzResourceGroupDeploymentOperation `
  -DeploymentName exampledeployment `
  -ResourceGroupName examplegroup

Você pode especificar uma propriedade, como StatusCode, StatusMessage, ou ProvisioningState para filtrar a saída.

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

Para obter mais informações, consulte a documentação dos escopos de operação de implantação: assinatura, grupo de gerenciamento e locatário.

Depurar modelo aninhado

O modelo principal do ARM e os modelos aninhados têm seu próprio nome de implantação e histórico de implantação. O arquivo e o módulo Bicep principais também usam um nome de implantação e um histórico de implantação separados.

modelo do ARM

Para registrar as informações de depuração para um modelo do ARM aninhado, use Microsoft.Resources/deployments com a propriedade debugSetting.

O seguinte exemplo mostra um modelo aninhado com o debugSetting para registrar a solicitação e a resposta da implantação.

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

O modelo do ARM principal e os modelos aninhados possuem seus próprios nomes de implantação e o histórico de implantação. Se você quiser que as propriedades request e response contenham informações de solução de problemas, esteja ciente dos seguintes cenários de implantação:

  • As propriedades request e response conterão valores null para o modelo principal e o modelo aninhado quando DeploymentDebugLogLevel não estiver ativado com o comando de implantação.
  • Quando o comando de implantação habilita DeploymentDebugLogLevel, as propriedades request e response contêm informações somente para o modelo principal. As propriedades do modelo aninhado contêm valores null.
  • Quando um modelo aninhado usa debugSetting e o comando de implantação não inclui DeploymentDebugLogLevel, apenas a implantação do modelo aninhado tem valores para as propriedades request e response. As propriedades do modelo principal contêm valores null.
  • Para obter os request e response para o modelo principal e o modelo aninhado, especifique DeploymentDebugLogLevel no comando de implantação e use debugSetting no modelo aninhado.

Arquivo Bicep

A recomendação para arquivos Bicep é usar módulos em vez de modelos aninhados com Microsoft.Resources/deployments. A mensagem de status, o código de status e o estado de provisionamento incluirão informações para o arquivo Bicep principal e o módulo que você pode usar para solucionar problemas de implantação.

Se você habilitar DeploymentDebugLogLevel a partir do comando de implantação, as propriedades request e response conterão informações apenas para a implantação do arquivo Bicep principal.

Remover o histórico de implantação de depuração

Quando terminar de depurar, você deve remover o histórico de implantação para impedir que qualquer pessoa que tenha acesso veja informações confidenciais que podem ter sido registradas. Para cada nome de implantação usado durante a depuração, execute o comando para remover o histórico de implantação.

Para remover o histórico de implantação de uma implantação de um grupo de recursos, use Remove-AzResourceGroupDeployment.

Remove-AzResourceGroupDeployment -ResourceGroupName examplegroup -Name exampledeployment

O comando retorna True quando é bem-sucedido.

Para obter mais informações sobre o histórico de implantação, consulte a documentação dos escopos de implantação: assinatura, grupo de gerenciamento e tenant.

Próximas etapas