Partilhar via


Guia de início rápido: solucionar problemas de implantações de arquivos Bicep

Este guia de início rápido descreve como solucionar erros de implantação de arquivos Bicep. Você criará um arquivo com erros e aprenderá a corrigi-los.

Existem três tipos de erros relacionados com uma implementação:

  • Os erros de validação ocorrem antes do início de uma implantação e são causados por erros de sintaxe no arquivo. Um editor de código como o Visual Studio Code pode identificar esses erros.
  • Os erros de validação de comprovação ocorrem quando um comando de implantação é executado, mas os recursos não são implantados. Estes erros são encontrados antes de começar a implementação. Por exemplo, se o valor de um parâmetro estiver incorreto, o erro é encontrado na validação de verificação prévia.
  • Os erros de implantação ocorrem durante o processo de implantação e só podem ser encontrados avaliando o progresso da implantação em seu ambiente do Azure.

Todos os tipos de erros devolvem um código de erro que deve utilizar para resolver os problemas da implementação. Os erros de validação e verificação prévia são apresentados no registo de atividades, mas não aparecem no seu histórico de implementações. Um ficheiro Bicep com erros de sintaxe não é compilado em JSON e não é apresentado no registo de atividades.

Pré-requisitos

Para concluir este início rápido, você precisa dos seguintes itens:

Criar um arquivo Bicep com erros

Copie o seguinte arquivo Bicep e salve-o localmente. Você usará esse arquivo para solucionar um erro de validação, um erro de comprovação e um erro de implantação. Este guia de início rápido pressupõe que você nomeou o arquivo troubleshoot.bicep , mas você pode dar a ele qualquer 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

Corrigir erro de validação

Abra o arquivo no Visual Studio Code. Você notará que o Visual Studio Code identifica um erro de sintaxe. A primeira declaração de parâmetro é marcada com rabiscos vermelhos para indicar um erro.

Captura de tela do Visual Studio Code com rabiscos vermelhos realçando um erro de sintaxe em um arquivo Bicep.

As linhas marcadas com um erro são:

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

Ao passar o mouse sobre parametero , você verá uma mensagem de erro.

Captura de tela de uma mensagem de erro detalhada exibida no Visual Studio Code ao passar o mouse sobre um erro de sintaxe em um arquivo Bicep.

A mensagem afirma: Este tipo de declaração não é reconhecido. Especifique um parâmetro, variável, recurso ou declaração de saída. Se você tentar implantar esse arquivo, receberá a mesma mensagem de erro do comando de implantação.

Se você olhar para a documentação de uma declaração de parâmetro, verá que a palavra-chave é realmente param. Quando você altera essa sintaxe, o erro de validação desaparece. O @allowed decorador também foi marcado como um erro, mas esse erro também é resolvido alterando a declaração de parâmetro. O decorador foi marcado como um erro porque espera uma declaração de parâmetro após o decorador. Esta condição não era verdadeira quando a declaração estava incorreta.

A linha fixa é:

param storageAccountType string = 'Standard_LRS'

Corrigir erro de comprovação

Agora que você corrigiu o erro de validação, é hora de implantar o arquivo. Mas, você fornecerá um valor de parâmetro incorreto para ver um erro de comprovação.

az group create --name troubleshootRG --___location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.bicep \
  --parameters prefixName=longNamewith!!Charactersthatarenotallowed

O Azure Resource Manager determina que o nome da conta de armazenamento contém caracteres que não são permitidos. Ele não tenta a implantação.

Você verá uma mensagem de erro que indica que a validação de comprovação falhou. Você também recebe uma mensagem dizendo que o nome da conta de armazenamento deve ter entre 3 e 24 caracteres e usar apenas números e letras minúsculas. O prefixo fornecido não atendia a esse requisito. Para obter mais informações sobre esse código de erro, consulte Resolver erros para nomes de contas de armazenamento.

Como o erro foi detetado na comprovação, não existe nenhuma implantação no histórico.

Captura de tela da seção de histórico de implantação do portal do Azure mostrando nenhuma implantação para um arquivo Bicep.

Mas, a implantação com falha existe no log de atividades.

Captura de ecrã do registo de atividades do portal do Azure a apresentar um erro de validação de comprovação para uma implementação de ficheiro Bicep.

Você pode abrir detalhes da entrada de log para ver a mensagem de erro.

Corrigir erro de implantação

Você implantará o arquivo novamente e fornecerá um valor permitido para o parâmetro name prefix.

az group create --name troubleshootRG --___location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.bicep \
  --parameters prefixName=stg

A implantação é iniciada, mas falha com uma mensagem informando que a rede virtual não foi encontrada. Normalmente, você corrigiria esse erro alterando a referência ao recurso. Neste início rápido, você excluirá a referência. Para obter mais informações sobre esse código de erro, consulte Resolver erros de recurso não encontrado.

Observe no portal que a implantação aparece no histórico.

Captura de ecrã da secção do histórico de implementação do portal do Azure a mostrar uma implementação com falha para um ficheiro Bicep.

Você pode abrir a entrada no histórico de implantação para obter detalhes sobre o erro. O erro também existe no log de atividades.

O arquivo Bicep tenta fazer referência a uma rede virtual que não existe no seu grupo de recursos. Exclua a referência à rede virtual existente para corrigir o erro.

@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

Você pode implantar esse arquivo Bicep sem erros.

Limpeza de recursos

Quando os recursos do Azure não forem mais necessários, exclua o grupo de recursos. Você pode excluir o grupo de recursos do Cloud Shell ou do portal.

az group delete --name troubleshootRG

Para eliminar o grupo de recursos do portal, siga estes passos:

  1. No portal do Azure, insira Grupos de recursos na caixa de pesquisa.
  2. No campo Filtrar por nome, insira o nome do grupo de recursos.
  3. Selecione o nome do grupo de recursos.
  4. Selecione Eliminar grupo de recursos.
  5. Para confirmar a eliminação, introduza o nome do grupo de recursos e, em seguida, selecione Eliminar.

Próximos passos

Neste guia de início rápido, você aprendeu como solucionar erros de implantação de arquivos Bicep.