Início Rápido: solucionar problemas de implantações JSON do modelo do ARM
Este início rápido descreve como solucionar erros de implantação JSON de modelo do ARM (modelo do Azure Resource Manager). Você vai configurar um modelo com erros e aprender a corrigir esses erros.
Um Modelo do Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do seu projeto. O modelo usa a sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.
Há três tipos de erros relacionados a uma implantação:
- Os erros de validação ocorrem antes do início de uma implantação e são causados por erros de sintaxe em seu arquivo. Um editor de código como Visual Studio Code pode identificar esses erros.
- Erros de validação de simulação ocorrem quando um comando de implantação é executado, mas os recursos não são implantados. Esses erros são encontrados sem que seja necessário iniciar a implantação. Por exemplo, se um valor de parâmetro estiver incorreto, o erro será encontrado na validação de simulação.
- Os erros de implantação ocorrem durante o processo de implantação e só podem ser encontrados por meio da avaliação do progresso da implantação no seu ambiente do Azure.
Todos os tipos de erros retornam um código de erro que você usa para solucionar problemas de implantação. Os erros de validação de simulação são mostrados no log de atividades, mas não aparecem no histórico de implantação.
Pré-requisitos
Para concluir este início rápido, você precisará dos seguintes itens:
- Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
- Visual Studio Code com a extensão Ferramentas do Resource Manager mais recente.
- Instale a versão mais recente do Azure PowerShell ou da CLI do Azure.
Criar um modelo com erros
Copie o modelo a seguir e salve-o localmente. Você usará esse arquivo para solucionar um erro de validação, um erro de simulação e um erro de implantação. Este início rápido pressupõe que o arquivo tenha sido nomeado como troubleshoot.json, mas você pode usar qualquer nome.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameterss": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"prefixName": {
"type": "string"
}
},
"variables": {
"storageAccountName": "[concat(parameters('prefixName'), uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('storageAccountName')]"
},
"vnetResult": {
"type": "object",
"value": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'doesnotexist'), '2021-03-01', 'Full')]"
}
}
}
Corrigir erro de validação
Abra o arquivo no Visual Studio Code. A linha ondulada embaixo de parameterss:
indica um erro. Para ver o erro de validação, passe o mouse sobre ele.
Você observará que variables
e resources
têm erros para referência de parâmetro indefinido. Para exibir os erros de validação do modelo, selecione Exibir>Problemas.
Todos os erros são causados pela ortografia incorreta do nome de um elemento.
"parameterss": {
A mensagem de erro informa: Falha na validação do modelo: não foi possível encontrar o membro 'parameterss' no objeto do tipo 'Template'. Caminho 'parameterss', linha 4, posição 16.
A sintaxe de modelo do ARM para parâmetros mostra que parameters
é o nome correto do elemento.
Para corrigir o erro de validação e os erros de referência de parâmetro indefinido, corrija a ortografia e salve o arquivo.
"parameters": {
Corrigir erro de simulação
Para criar um erro de validação de simulação, você usará um valor incorreto para o parâmetro prefixName
.
Este início rápido usa troubleshootRG para o nome do grupo de recursos, mas você pode usar qualquer nome.
az group create --name troubleshootRG --location westus
az deployment group create \
--resource-group troubleshootRG \
--template-file troubleshoot.json \
--parameters prefixName=long!!StoragePrefix
O modelo falha na validação de simulação e a implantação não é executada. O prefixName
tem mais de 11 caracteres e contém caracteres especiais e letras maiúsculas.
Os nomes de armazenamento precisam ter entre 3 e 24 caracteres e usar apenas letras minúsculas e números. O valor do prefixo criou um nome de armazenamento inválido. Para obter mais informações, consulte Solucionar erros de nomes de conta de armazenamento. Para corrigir o erro de simulação, use um prefixo que tenha 11 caracteres ou menos e contenha apenas letras minúsculas ou números.
Como a implantação não foi executada, não há nenhum histórico de implantação.
O log de atividades mostra o erro de simulação. Selecione o log para ver os detalhes do erro.
Corrigir erro de implantação
Execute a implantação com um valor de prefixo válido, como storage
.
az group create --name troubleshootRG --location westus
az deployment group create \
--resource-group troubleshootRG \
--template-file troubleshoot.json \
--parameters prefixName=storage
A implantação começa e fica visível no histórico de implantação. A implantação falha porque outputs
faz referência a uma rede virtual que não existe no grupo de recursos. No entanto, não houve erros na conta de armazenamento, portanto o recurso foi implantado. O histórico de implantação mostra uma implantação com falha.
Para corrigir o erro de implantação, altere a função de referência para usar um recurso válido. Para obter mais informações, confira Solucionar erros de recurso não encontrado. Para este início rápido, exclua a vírgula que precede vnetResult
e todo o vnetResult
. Salve o arquivo e execute a implantação novamente.
"vnetResult": {
"type": "object",
"value": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'doesnotexist'), '2021-03-01', 'Full')]"
}
Depois que os erros de validação, simulação e implantação forem corrigidos, o modelo a seguir implantará uma conta de armazenamento. O histórico de implantação e o log de atividades mostram uma implantação bem-sucedida.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"prefixName": {
"type": "string"
}
},
"variables": {
"storageAccountName": "[concat(parameters('prefixName'), uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('storageAccountName')]"
}
}
}
Limpar os recursos
Quando os recursos do Azure não forem mais necessários, exclua o grupo de recursos.
az group delete --name troubleshootRG
Para excluir o grupo de recursos do portal, siga estas etapas:
- Na portal do Azure, insira Grupos de recursos na caixa de pesquisa.
- No campo Filtrar por nome, insira o nome do grupo de recursos.
- Selecione o nome do grupo de recursos.
- Selecione Excluir grupo de recursos.
- Para confirmar a exclusão, insira o nome do grupo recursos e selecione Excluir.
Próximas etapas
Neste início rápido, você aprendeu a solucionar erros de implantação de modelo do ARM.