Snabbstart: Felsöka distributioner av ARM-mallar

Den här snabbstarten beskriver hur du Azure Resource Manager distributionsfel för en mall (ARM-mall). Du ska konfigurera en mall med fel och lära dig hur du åtgärdar felen.

Det finns tre typer av fel som är relaterade till en distribution:

  • Verifieringsfel inträffar innan en distribution påbörjas och orsakas av syntaxfel i filen. Redigeringsredigeraren kan identifiera dessa fel.
  • Föregående verifieringsfel inträffar när ett distributionskommando körs men resurser inte distribueras. Dessa fel hittas utan att starta distributionen. Om ett parametervärde till exempel är felaktigt hittas felet i den första verifieringen.
  • Distributionsfel uppstår under distributionsprocessen och kan bara hittas genom att utvärdera distributionens förlopp.

Alla typer av fel returnerar en felkod som du använder för att felsöka distributionen. Verifierings- och preflight-fel visas i aktivitetsloggen men visas inte i distributionshistoriken.

Förutsättningar

För att slutföra den här snabbstarten behöver du följande:

Skapa en mall med fel

Kopiera följande mall och spara den lokalt. Du använder den här filen för att felsöka ett verifieringsfel, ett första fel och ett distributionsfel. Den här snabbstarten förutsätter att du har gett filen namnet troubleshoot.json, men du kan använda vilket namn som helst.

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

Åtgärda verifieringsfel

Öppna filen i Visual Studio Code. Den vågiga linjen under parameterss: anger ett fel. Hovra över felet om du vill se verifieringsfelet.

Skärmbild av ett mallverifieringsfel i Visual Studio Kod.

Du ser att och variables har resources fel för odefinierad parameterreferens. Om du vill visa mallens valideringsfel väljer du Visa > problem.

Skärmbild av Visual Studio kod som visar odefinierade parameterreferensfel.

Alla fel orsakas av den felaktiga stavningen i ett elementnamn.

"parameterss": {

Felmeddelandet anger att mallverifieringen misslyckades: Det gick inte att hitta medlemmens "parametrar" för objektet av typen "Mall". Sökvägen "parameterss", rad 4, position 16.

ARM-mallsyntaxen för parametrar visar parameters att är rätt elementnamn.

Åtgärda verifieringsfelet och odefinierade parameterreferensfel genom att korrigera stavningen och spara filen.

"parameters": {

Åtgärda det första felet

Om du vill skapa ett första valideringsfel använder du ett felaktigt värde för prefixName parametern .

I den här snabbstarten används troubleshootRG som resursgruppnamn, men du kan använda vilket namn som helst.

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

Mallen misslyckas med den första verifieringen och distributionen körs inte. prefixNameär mer än 11 tecken och innehåller specialtecken och versaler.

Storage måste innehålla mellan 3 och 24 tecken och får endast innehålla gemener och siffror. Prefixvärdet skapade ett ogiltigt lagringsnamn. Mer information finns i Åtgärda fel med lagringskontonamn. Du kan åtgärda det svåra felet genom att använda ett prefix som är 11 tecken eller mindre och som endast innehåller gemener eller siffror.

Eftersom distributionen inte har körts finns det ingen distributionshistorik.

Skärmbild av översikten över resursgrupper som inte visar någon distribution för det första felet.

Aktivitetsloggen visar det första felet. Välj loggen för att se felinformationen.

Skärmbild av resursgruppens aktivitetslogg med ett förinfört fel.

Åtgärda distributionsfel

Kör distributionen med ett giltigt prefixvärde, till exempel storage .

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

Distributionen börjar och visas i distributionshistoriken. Distributionen misslyckas eftersom outputs refererar till ett virtuellt nätverk som inte finns i resursgruppen. Det uppstod dock inga fel för lagringskontot, så resursen distribuerades. Distributionshistoriken visar en misslyckad distribution.

Skärmbild av översikten över resursgrupper som visar en misslyckad distribution.

Om du vill åtgärda distributionsfelet ändrar du referensfunktionen så att den använder en giltig resurs. Mer information finns i Resolve resource not found errors. För den här snabbstarten tar du bort kommatecken vnetResult som föregår och hela vnetResult . Spara filen och kör distributionen igen.

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

När verifierings-, preflight- och distributionsfelen har åtgärdats distribuerar följande mall ett lagringskonto. Distributionshistoriken och aktivitetsloggen visar en lyckad distribution.

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

Rensa resurser

När Azure-resurserna inte längre behövs tar du bort resursgruppen.

az group delete --name troubleshootRG

Följ dessa steg om du vill ta bort resursgruppen från portalen:

  1. I Azure Portal anger du Resursgrupper i sökrutan.
  2. I fältet Filtrera efter namn anger du resursgruppens namn.
  3. Välj resursgruppens namn.
  4. Välj Ta bort resursgrupp.
  5. Bekräfta borttagningen genom att ange resursgruppens namn och välja Ta bort.

Nästa steg

I den här snabbstarten har du lärt dig hur du felsöker distributionsfel för ARM-mallar.