Rychlý start: Řešení potíží s nasazeními JSON šablony ARM

Tento rychlý start popisuje, jak řešit chyby nasazení JSON šablony Azure Resource Manageru (šablony ARM). Nastavíte šablonu s chybami a naučíte se, jak chyby opravit.

Šablona Azure Resource Manageru je soubor JSON (JavaScript Object Notation), který definuje infrastrukturu a konfiguraci projektu. Tato šablona používá deklarativní syntaxi. Popíšete zamýšlené nasazení, aniž byste museli psát posloupnost programovacích příkazů pro vytvoření nasazení.

V souvislosti s nasazením existují 3 typy chyb:

  • K chybám ověřování dochází před zahájením nasazení a jsou způsobeny chybami syntaxe v souboru. Editor kódu, jako je Visual Studio Code, může tyto chyby identifikovat.
  • Při spuštění příkazu nasazení dojde k chybám předběžného ověření, ale prostředky se nenasadí. Tyto chyby se zjistí bez spuštění nasazení. Například v případě nesprávné hodnoty parametru se chyba zjistí při předběžném ověřování.
  • Během procesu nasazení dochází k chybám nasazení a lze je najít pouze posouzením průběhu nasazení ve vašem prostředí Azure.

Všechny typy chyb vrací kód chyby, který můžete použít při řešení potíží s nasazením. Chyby ověření a předběžného ověření se zobrazí v protokolu aktivit, ale ne v historii nasazení.

Požadavky

K dokončení tohoto rychlého startu potřebujete následující položky:

Vytvoření šablony s chybami

Zkopírujte následující šablonu a uložte ji místně. Tento soubor použijete k řešení potíží s chybou ověření, předběžnou chybou a chybou nasazení. V tomto rychlém startu se předpokládá, že jste soubor pojmenovali troubleshoot.json , ale můžete použít libovolný název.

{
  "$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')]"
    }
  }
}

Oprava chyby ověření

Otevřete soubor v editoru Visual Studio Code. Vlnovka pod parameterss: značí chybu. Chybu ověření zobrazíte tak, že na tuto chybu najedete myší.

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

Všimněte si, že variables a resources máte chyby pro nedefinovaný odkaz na parametr. Pokud chcete zobrazit chyby ověření šablony, vyberte Zobrazit>problémy.

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

Všechny chyby jsou způsobeny nesprávným pravopisem názvu elementu.

"parameterss": {

Chybová zpráva uvádí, že ověření šablony selhalo: Nepodařilo se najít člena parameterss u objektu typu Template. Cesta "parameterss", řádek 4, pozice 16.

Syntaxe šablony ARM pro parametry ukazuje, že parameters je správný název elementu.

Chcete-li opravit chybu ověření a nedefinované chyby odkazu na parametry, opravte pravopis a uložte soubor.

"parameters": {

Oprava předběžné chyby

K vytvoření chyby předběžného ověření použijete pro parametr nesprávnou hodnotu prefixName .

V tomto rychlém startu se pro název skupiny prostředků používá řešení potíží , ale můžete použít libovolný název.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.json \
  --parameters prefixName=long!!StoragePrefix

Předletové ověření šablony selže a nasazení se nespustí. Obsahuje prefixName více než 11 znaků a obsahuje speciální znaky a velká písmena.

Názvy úložišť musí mít délku 3 až 24 znaků a musí používat jenom malá písmena a číslice. Hodnota předpony vytvořila neplatný název úložiště. Další informace najdete v tématu Řešení chyb týkajících se názvů účtů úložiště. Pokud chcete opravit předletovou chybu, použijte předponu, která má maximálně 11 znaků a obsahuje jenom malá písmena nebo číslice.

Vzhledem k tomu, že se nasazení nespusilo, neexistuje žádná historie nasazení.

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

Protokol aktivit zobrazuje předběžnou chybu. Výběrem protokolu zobrazíte podrobnosti o chybě.

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

Oprava chyby nasazení

Spusťte nasazení s platnou hodnotou předpony, například storage.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.json \
  --parameters prefixName=storage

Nasazení začíná a je viditelné v historii nasazení. Nasazení selže, protože outputs odkazuje na virtuální síť, která ve skupině prostředků neexistuje. U účtu úložiště ale nebyly žádné chyby, takže se nasadil prostředek. V historii nasazení se zobrazuje neúspěšné nasazení.

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

Pokud chcete chybu nasazení opravit, změňte referenční funkci tak, aby používala platný prostředek. Další informace najdete v tématu Řešení chyb, které se nenašly. V tomto rychlém startu odstraňte čárku, která předchází vnetResult a všem .vnetResult Uložte soubor a spusťte nasazení znovu.

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

Po odstranění chyb ověření, předběžného nasazení a nasazení nasadí následující šablona účet úložiště. Historie nasazení a protokol aktivit ukazují úspěšné nasazení.

{
  "$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')]"
    }
  }
}

Vyčištění prostředků

Pokud už prostředky Azure nepotřebujete, odstraňte skupinu prostředků.

az group delete --name troubleshootRG

Pokud chcete odstranit skupinu prostředků z portálu, postupujte takto:

  1. Na webu Azure Portal zadejte do vyhledávacího pole skupiny prostředků.
  2. Do pole Filtrovat podle názvu zadejte název skupiny prostředků.
  3. Vyberte název skupiny prostředků.
  4. Vyberte Odstranit skupinu prostředků.
  5. Potvrďte odstranění zadáním názvu skupiny prostředků a vyberte Odstranit.

Další kroky

V tomto rychlém startu jste zjistili, jak řešit chyby nasazení šablon ARM.