Guia de início rápido: solucionar problemas de implantações JSON de modelo ARM

Este guia de início rápido descreve como solucionar erros de implantação JSON do modelo do Azure Resource Manager (modelo ARM). Você configurará um modelo com erros e aprenderá a corrigi-los.

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 utiliza sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.

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

  • Os erros de validação ocorrem antes do início de uma implantação e são causados por erros de sintaxe no arquivo. Um editor de código como o Visual Studio Code pode identificar esses erros.
  • Os erros de validação de comprovação ocorrem quando um comando de implantação é executado, mas os recursos não são implantados. 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 implantação ocorrem durante o processo de implantação e só podem ser encontrados avaliando o progresso da implantação em 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.

Pré-requisitos

Para concluir este início rápido, você precisa dos seguintes itens:

  • Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
  • Código do Visual Studio com a extensão mais recente das Ferramentas do Azure Resource Manager.
  • 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 comprovação e um erro de implantação. Este guia de início rápido pressupõe que você nomeou o arquivo 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 abaixo parameterss: indica um erro. Para ver o erro de validação, passe o mouse sobre o erro.

Screenshot of Visual Studio Code highlighting a template validation error with a red wavy line under the misspelled 'parameterss:' in the code.

Você notará isso variables e resources terá erros para referência de parâmetro indefinido. Para exibir os erros de validação do modelo, selecione Exibir>problemas.

Screenshot of Visual Studio Code showing the Problems tab listing undefined parameter reference errors for 'variables' and 'resources' sections.

Todos os erros são causados pela ortografia incorreta de um nome de elemento.

"parameterss": {

A mensagem de erro indica Falha na validação do modelo: Não foi possível encontrar o membro 'parâmetros' no objeto do tipo 'Modelo'. Caminho 'parâmetros', linha 4, posição 16.

A sintaxe do modelo ARM para parâmetros mostra que parameters é o nome correto do elemento.

Para corrigir o erro de validação e erros de referência de parâmetros indefinidos, corrija a ortografia e salve o arquivo.

"parameters": {

Corrigir erro de comprovação

Para criar um erro de validação de comprovação, você usará um valor incorreto para o prefixName parâmetro.

Este guia de 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 comprovaçã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 devem 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, veja Resolver erros de nomes de contas de armazenamento. Para corrigir o erro de comprovação, use um prefixo de 11 caracteres ou menos e contenha apenas letras minúsculas ou números.

Como a implantação não foi executada, não há histórico de implantação.

Screenshot of Azure resource group overview page displaying an empty deployment history section due to a preflight error.

O registro de atividades mostra o erro de comprovação. Selecione o log para ver os detalhes do erro.

Screenshot of Azure resource group activity log showing a preflight error entry with a red exclamation mark icon.

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 é 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 para a conta de armazenamento, portanto, o recurso foi implantado. O histórico de implantação mostra uma implantação com falha.

Screenshot of Azure resource group overview page showing a failed deployment with a red exclamation mark icon in the deployment history section.

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, consulte Resolver erros de recurso não encontrado. Para este início rápido, exclua a vírgula que precede e todos os vnetResultvnetResultarquivos . Salve o arquivo e execute novamente a implantação.

"vnetResult": {
  "type": "object",
  "value": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'doesnotexist'), '2021-03-01', 'Full')]"
}

Depois que os erros de validação, comprovaçã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')]"
    }
  }
}

Clean up resources (Limpar recursos)

Quando os recursos do Azure não forem mais necessários, exclua o grupo de recursos.

az group delete --name troubleshootRG

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

  1. No portal do Azure, insira Grupos de recursos na caixa de pesquisa.
  2. No campo Filtrar 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, introduza o nome do grupo de recursos e, em seguida, selecione Eliminar.

Próximos passos

Neste guia de início rápido, você aprendeu como solucionar erros de implantação de modelo ARM.