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:
- Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
- Visual Studio Code com a extensão bicep mais recente.
- A versão mais recente do Azure PowerShell ou da CLI do Azure.
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.
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.
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.
Contudo, a implementaçã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 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.
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:
- Na portal do Azure, introduza Grupos de recursos na caixa de pesquisa.
- No campo Filtrar por nome , introduza o nome do grupo de recursos.
- Selecione o nome do grupo de recursos.
- Selecione Eliminar grupo de recursos.
- 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.