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:
- Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
- Visual Studio Code med det senaste Azure Resource Manager Tools-tillägget.
- Installera den senaste versionen av Azure PowerShell eller Azure CLI.
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.
Du ser att och variables har resources fel för odefinierad parameterreferens. Om du vill visa mallens valideringsfel väljer du Visa > problem.
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.
Aktivitetsloggen visar det första felet. Välj loggen för att se felinformationen.
Å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.
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:
- I Azure Portal anger du Resursgrupper i sökrutan.
- I fältet Filtrera efter namn anger du resursgruppens namn.
- Välj resursgruppens namn.
- Välj Ta bort resursgrupp.
- 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.