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:
- Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
- Visual Studio Code s nejnovějším rozšířením nástrojů Azure Resource Manageru
- Nainstalujte nejnovější verzi Azure PowerShellu nebo Azure CLI.
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ší.
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.
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í.
Protokol aktivit zobrazuje předběžnou chybu. Výběrem protokolu zobrazíte podrobnosti o chybě.
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í.
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:
- Na webu Azure Portal zadejte do vyhledávacího pole skupiny prostředků.
- Do pole Filtrovat podle názvu zadejte název skupiny prostředků.
- Vyberte název skupiny prostředků.
- Vyberte Odstranit skupinu prostředků.
- 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.