Início Rápido: Resolver problemas de implementações de ficheiros Bicep

Este início rápido descreve como resolver erros de implementação de ficheiros bicep. Irá criar um ficheiro com erros e aprender a corrigir os erros.

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

  • Os erros de validação ocorrem antes do início de uma implementação e são causados por erros de sintaxe no ficheiro. Um editor de código como o Visual Studio Code pode identificar estes erros.
  • Os erros de validação de verificação prévia ocorrem quando um comando de implementação é executado, mas os recursos não são implementados. 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 implementação ocorrem durante o processo de implementação e só podem ser encontrados ao avaliar o progresso da implementação no 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, precisa dos seguintes itens:

Criar um ficheiro Bicep com erros

Copie o seguinte ficheiro Bicep e guarde-o localmente. Irá utilizar este ficheiro para resolver um erro de validação, um erro de verificação prévia e um erro de implementação. Este início rápido pressupõe que atribuiu o nome troubleshoot.bicep ao ficheiro, mas pode atribuir-lhe 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 ficheiro no Visual Studio Code. Irá reparar que o Visual Studio Code identifica um erro de sintaxe. A primeira declaração de parâmetro é marcada com ondulantes vermelhos para indicar um erro.

Captura de ecrã a mostrar o Visual Studio Code com os seletores vermelhos a realçarem um erro de sintaxe num ficheiro Bicep.

As linhas marcadas com um erro são:

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

Quando paira o cursor do rato sobre parameter, é apresentada uma mensagem de erro.

Captura de ecrã a mostrar uma mensagem de erro detalhada apresentada no Visual Studio Code ao pairar o rato sobre um erro de sintaxe num ficheiro Bicep.

A mensagem indica: este tipo de declaração não é reconhecido. Especifique um parâmetro, variável, recurso ou declaração de saída. Se tentar implementar este ficheiro, receberá a mesma mensagem de erro do comando de implementação.

Se analisar a documentação de uma declaração de parâmetros, verá que a palavra-chave é na verdade param. Quando 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 ao alterar a declaração de parâmetros. O decorador foi marcado como um erro porque espera uma declaração de parâmetros 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 verificação prévia

Agora que corrigiu o erro de validação, está na altura de implementar o ficheiro. Contudo, irá fornecer um valor de parâmetro incorreto para ver um erro de verificação prévia.

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 carateres que não são permitidos. Não tenta a implementação.

Verá uma mensagem de erro que indica que a validação de verificação prévia falhou. Também recebe uma mensagem a indicar que o nome da conta de armazenamento tem de ter entre 3 e 24 carateres e utilizar apenas números e letras minúsculas. O prefixo que forneceu não cumpriu esse requisito. Para obter mais informações sobre este código de erro, veja Resolver erros de nomes de contas de armazenamento.

Uma vez que o erro foi detetado antes do voo, não existe nenhuma implementação no histórico.

Captura de ecrã da secção do histórico de implementações do portal do Azure a mostrar que não existem implementações para um ficheiro Bicep.

Contudo, a implementação falhada existe no Registo de Atividades.

Captura de ecrã do registo de atividades do portal do Azure a apresentar um erro de validação de verificação prévia para uma implementação de ficheiro bicep.

Pode abrir detalhes da entrada de registo para ver a mensagem de erro.

Corrigir erro de implementação

Irá implementar novamente o ficheiro e fornecer um valor permitido para o parâmetro de prefixo de nome.

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

A implementação é iniciada, mas falha com uma mensagem a indicar que a rede virtual não foi encontrada. Normalmente, corrigiria este erro ao alterar a referência ao recurso. Neste início rápido, irá eliminar a referência. Para obter mais informações sobre este código de erro, veja Resolver erros de recursos não encontrados.

Repare no portal que a implementação aparece no histórico.

Captura de ecrã da secção do histórico de implementações do portal do Azure a mostrar uma implementação falhada de um ficheiro Bicep.

Pode abrir a entrada no histórico de implementações para obter detalhes sobre o erro. O erro também existe no registo de atividades.

O ficheiro Bicep tenta referenciar uma rede virtual que não existe no seu grupo de recursos. Elimine 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

Pode implementar esse ficheiro Bicep sem erros.

Limpar os recursos

Quando os recursos do Azure já não forem necessários, elimine o grupo de recursos. Pode eliminar 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. Na portal do Azure, introduza Grupos de recursos na caixa de pesquisa.
  2. No campo Filtrar por nome , introduza 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.

Passos seguintes

Neste início rápido, aprendeu a resolver erros de implementação de ficheiros bicep.