Quickstart: Implementações de ficheiros Bicep de resolução de problemas

Este quickstart descreve como resolver erros de implementação de ficheiros Bicep. Criará um ficheiro com erros e aprenderá a corrigir os erros.

Existem três tipos de erros que estão relacionados com uma implantação:

  • Erros de validação ocorrem antes do início de uma implementação e são causados por erros de sintaxe no seu ficheiro. O seu editor pode identificar estes erros.
  • Erros de validação de pré-voo ocorrem quando um comando de implantação é executado, mas os recursos não são implantados. Estes erros são encontrados sem iniciar a implantação. Por exemplo, se um valor de parâmetro estiver incorreto, o erro é encontrado na validação de pré-voo.
  • Os erros de implantação ocorrem durante o processo de implantação e só podem ser encontrados avaliando o progresso da implantação.

Todos os tipos de erros devolvem um código de erro que utiliza para resolver problemas na implementação. Os erros de validação e pré-voo são mostrados no registo de atividades, mas não aparecem no histórico de implantação. Um ficheiro Bicep com erros de sintaxe não compila em JSON e não é mostrado no registo de atividade.

Pré-requisitos

Para completar este arranque rápido, precisa dos seguintes itens:

Criar um ficheiro Bicep com erros

Copie o seguinte ficheiro Bicep e guarde-o localmente. Utilizará este ficheiro para resolver um erro de validação, um erro de pré-voo e um erro de implantação. Este quickstart assume que nomeou o ficheiro de resolução de problemas.bíceps, mas pode dar-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 Visual Studio Código. Vai notar que Visual Studio Código identifica um erro de sintaxe. A primeira declaração de parâmetros é marcada com rabiscos vermelhos para indicar um erro.

Screenshot de Visual Studio Código mostrando erro na sintaxe.

As linhas marcadas com um erro são:

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

Quando se paira sobre o parameter assunto, vê-se uma mensagem de erro.

Screenshot da mensagem de erro no Código Visual Studio.

A mensagem diz: "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 implantação.

Se olhar para a documentação de uma declaração de parâmetros,verá que a palavra-chave é na verdade param . Quando se altera a 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âmetros. 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 pré-voo

Agora que corrigiu o erro de validação, está na hora de desdobrar o ficheiro. Mas, você vai fornecer um mau valor de parâmetro para ver um erro de pré-voo.

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

O Gestor de Recursos Azure determina que o nome da conta de armazenamento contém caracteres que não são permitidos. Não tenta o destacamento.

Vê uma mensagem de erro que indica que a validação do pré-voo falhou. Também recebe uma mensagem que diz que o nome da conta de armazenamento deve ter entre 3 e 24 caracteres de comprimento e usar números e letras minúsculas apenas. O prefixo que forneceu não cumpriu esse requisito. Para obter mais informações sobre este código de erro, consulte os erros de Resolução para os nomes das contas de armazenamento.

Como o erro foi apanhado no pré-voo, não existe nenhuma implantação na história.

Screenshot do portal sem implantação na história.

Mas a implantação falhada existe no Registo de Atividades.

Screenshot do registo de atividade com erro.

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

Corrigir erro de implementação

Irá implementar o ficheiro novamente e fornecerá um valor permitido para o parâmetro do prefixo do 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 começa mas falha com uma mensagem de que a rede virtual não foi encontrada. Normalmente, corrigiria este erro alterando a referência ao recurso. Neste arranque rápido, irá apagar a referência. Para obter mais informações sobre este código de erro, consulte o recurso Resolve não encontrados erros.

Note no portal que a implantação aparece na história.

Screenshot do histórico de implantação no portal.

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

O ficheiro Bicep tenta fazer referência a 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'
])
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: {}
}

output storageAccountName string = storageAccountName

Pode implementar o ficheiro Bicep sem erros.

Limpar os recursos

Quando os recursos Azure já não forem necessários, elimine o grupo de recursos. Pode eliminar o grupo de recursos da Cloud Shell ou do portal.

az group delete --name troubleshootRG

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

  1. No portal Azure, insira grupos de Recursos na caixa de pesquisa.
  2. No campo Filtro 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, insira o nome do grupo de recursos e selecione Delete.

Passos seguintes

Neste arranque rápido, aprendeu a resolver erros de implementação de ficheiros Bicep.