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. Um editor de código como o Visual Studio Code 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 implementação ocorrem durante o processo de implantação e só podem ser encontrados avaliando o progresso da implantação no seu ambiente Azure.
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:
- Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
- Código visual do estúdio com a mais recente extensão Bicep.
- A versão mais recente de Azure PowerShell ou Azure CLI.
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 no Código do Estúdio Visual. Vai notar que o Código do Estúdio Visual identifica um erro de sintaxe. A primeira declaração de parâmetros é marcada com rabiscos vermelhos para indicar um erro.
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 parameter
o assunto, vê-se uma mensagem de erro.
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
Azure Resource Manager 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.
Mas a implantação falhada existe no Registo de Atividades.
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.
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 de Cloud Shell ou do portal.
az group delete --name troubleshootRG
Para eliminar o grupo de recursos do portal, siga estes passos:
- No portal do Azure, insira grupos de recursos na caixa de pesquisa.
- No campo Filtro por nome , insira o nome do grupo de recursos.
- Selecione o nome do grupo de recursos.
- Selecione Eliminar grupo de recursos.
- 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.