Rövid útmutató: ARM-sablon JSON-telepítéseinek hibaelhárítása

Ez a rövid útmutató bemutatja, hogyan háríthatja el az Azure Resource Manager-sablon (ARM-sablon) JSON-telepítési hibáit. Beállít egy hibákat tartalmazó sablont, és megtudhatja, hogyan háríthatja el a hibákat.

Az Azure Resource Manager-sablon egy JavaScript Object Notation (JSON) fájl, amely meghatározza a projekt infrastruktúráját és konfigurációját. A sablon deklaratív szintaxist használ. Az üzembe helyezés létrehozásához szükséges programozási parancsok sorozatának megírása nélkül írhatja le a tervezett üzembe helyezést.

Az üzembe helyezéssel háromféle hiba függ össze:

  • Az érvényesítési hibák az üzembe helyezés megkezdése előtt fordulnak elő, és a fájl szintaxishibái okozzák. A Visual Studio Code-hoz hasonló kódszerkesztő képes azonosítani ezeket a hibákat.
  • Az előzetes ellenőrzési hibák akkor fordulnak elő, ha egy üzembe helyezési parancs fut, de az erőforrások nincsenek üzembe helyezve. Ezek a hibák az üzembe helyezés elindítása nélkül is felderíthetők. Ha például egy paraméter értéke helytelen, ez a hiba az előzetes ellenőrzés során megtalálható.
  • Az üzembe helyezési hibák az üzembe helyezési folyamat során fordulnak elő, és csak az üzembe helyezés előrehaladásának az Azure-környezetben történő felmérésével találhatók.

Mindhárom típusú hiba az üzembe helyezés hibaelhárításához használható hibakódot ad vissza. Az érvényesítési és elővizsgálati hibák a tevékenységnaplóban megjelennek, de az üzembe helyezési előzményekben nem.

Előfeltételek

A rövid útmutató végrehajtásához a következő elemekre van szüksége:

Sablon létrehozása hibákkal

Másolja ki a következő sablont, és mentse helyileg. Ezzel a fájllal elháríthat egy érvényesítési hibát, egy elővizsgálati hibát és egy üzembe helyezési hibát. Ez a rövid útmutató feltételezi, hogy elnevezte a fájlt troubleshoot.json , de bármilyen nevet használhat.

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

Érvényesítési hiba javítása

Nyissa meg a fájlt a Visual Studio Code-ban. Az alatta lévő parameterss: hullámos vonal hibát jelez. Az érvényesítési hiba megtekintéséhez vigye az egérmutatót a hiba fölé.

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

Ezt fogja látni, variables és resources hibákba ütközik a nem definiált paraméterhivatkozások esetében. A sablon érvényesítési hibáinak megjelenítéséhez válassza a Problémák megtekintése lehetőséget>.

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

Az összes hibát egy elemnév helytelen helyesírása okozza.

"parameterss": {

A hibaüzenet azt jelzi, hogy a sablon érvényesítése nem sikerült: Nem található tag "paramétere" a "Sablon" típusú objektumon. Elérési út "paraméterek", 4. sor, 16. pozíció.

A paraméterek ARM-sablonszintaxisa azt mutatja, hogy parameters ez a megfelelő elemnév.

Az érvényesítési hiba és a nem definiált paraméterhivatkozási hibák kijavításához javítsa ki a helyesírást, és mentse a fájlt.

"parameters": {

Az elővizsgálati hiba javítása

Előzetes ellenőrzési hiba létrehozásához helytelen értéket fog használni a prefixName paraméterhez.

Ez a rövid útmutató az erőforráscsoport nevéhez használja a troubleshootRG függvényt, de bármilyen nevet használhat.

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

A sablon nem felel meg az előzetes ellenőrzésnek, és az üzembe helyezés nem fut. Ez prefixName több mint 11 karakterből áll, és speciális karaktereket és nagybetűket tartalmaz.

A tárneveknek 3 és 24 karakter közöttinek kell lenniük, és csak kisbetűket és számokat kell használniuk. Az előtag értéke érvénytelen tárolónevet hozott létre. További információt a tárfióknevekkel kapcsolatos hibák elhárítását ismertető szakaszban talál. Az elővizsgálati hiba kijavításához használjon legalább 11 karakter hosszúságú előtagot, és csak kisbetűket vagy számokat tartalmaz.

Mivel az üzembe helyezés nem futott, nincs üzembe helyezési előzmény.

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

A tevékenységnapló az elővizsgálati hibát jeleníti meg. Válassza ki a naplót a hiba részleteinek megtekintéséhez.

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

Üzembehelyezési hiba kijavítása

Futtassa az üzembe helyezést érvényes előtagértékkel, például storage.

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

Az üzembe helyezés megkezdődik, és látható az üzembe helyezési előzményekben. Az üzembe helyezés meghiúsul, mert outputs olyan virtuális hálózatra hivatkozik, amely nem létezik az erőforráscsoportban. A tárfiók esetében azonban nem történt hiba, ezért az erőforrás üzembe lett helyezve. Az üzembe helyezési előzmények sikertelen üzembe helyezést mutatnak.

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

Az üzembehelyezési hiba kijavításához módosítsa a referenciafüggvényt érvényes erőforrás használatára. További információ: Az erőforrás nem talált hibáinak elhárítása. Ebben a rövid útmutatóban törölje az előző és az összes vesszőt vnetResultvnetResult. Mentse a fájlt, és futtassa újra az üzembe helyezést.

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

Az ellenőrzés, az előzetes és az üzembe helyezési hibák kijavítása után az alábbi sablon üzembe helyez egy tárfiókot. Az üzembe helyezési előzmények és a tevékenységnapló sikeres üzembe helyezést mutatnak.

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

Az erőforrások eltávolítása

Ha az Azure-erőforrásokra már nincs szükség, törölje az erőforráscsoportot.

az group delete --name troubleshootRG

Az erőforráscsoport portálról való törléséhez kövesse az alábbi lépéseket:

  1. Az Azure Portalon írja be az erőforráscsoportokat a keresőmezőbe.
  2. A Szűrő név szerint mezőbe írja be az erőforráscsoport nevét.
  3. Válassza ki az erőforráscsoport nevét.
  4. Válassza az Erőforráscsoport törlése elemet.
  5. A törlés megerősítéséhez írja be az erőforráscsoport nevét, és válassza a Törlés lehetőséget.

Következő lépések

Ebben a rövid útmutatóban megtanulta, hogyan háríthatja el az ARM-sablon üzembe helyezési hibáit.