Compartilhar via


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:

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.

Captura de tela do Visual Studio Code destacando um erro de validação de modelo com uma linha ondulada vermelha sob os

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.

Captura de tela do Visual Studio Code mostrando a guia Problemas listando erros de referência de parâmetro indefinidos para as seções

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.

Captura de tela da página de visão geral do grupo de recursos do Azure exibindo uma seção de histórico de implantação vazia devido a um erro de simulação.

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

Captura de tela do log de atividades do grupo de recursos do Azure mostrando uma entrada de erro de simulação com um ícone de ponto de exclamação vermelho.

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.

Captura de tela da página de visão geral do grupo de recursos do Azure mostrando uma implantação com falha com um ícone de ponto de exclamação vermelho na seção de histórico de implantação.

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:

  1. Na 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 Excluir grupo de recursos.
  5. 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.