Szybki start: rozwiązywanie problemów z wdrożeniami JSON szablonu usługi ARM
W tym przewodniku Szybki start opisano, jak rozwiązywać problemy z błędami wdrażania JSON szablonu usługi Azure Resource Manager (szablon usługi ARM). Skonfigurujesz szablon z błędami i dowiesz się, jak naprawić błędy.
Szablon usługi Azure Resource Manager to plik JavaScript Object Notation (JSON), który definiuje infrastrukturę i konfigurację projektu. W szablonie używana jest składnia deklaratywna. Możesz opisać zamierzone wdrożenie bez konieczności pisania sekwencji poleceń programowania w celu utworzenia wdrożenia.
Istnieją trzy rodzaje błędów związanych z wdrażaniem:
- Błędy walidacji występują przed rozpoczęciem wdrażania i są spowodowane błędami składni w pliku. Edytor kodu, taki jak Visual Studio Code, może identyfikować te błędy.
- Błędy weryfikacji wstępnej występują, gdy polecenie wdrożenia jest uruchamiane, ale zasoby nie są wdrażane. Te błędy można znaleźć bez uruchamiania wdrożenia. Jeśli na przykład wartość parametru jest niepoprawna, zostanie znaleziony błąd podczas weryfikacji wstępnej.
- Błędy wdrażania występują podczas procesu wdrażania i można je znaleźć tylko przez ocenę postępu wdrożenia w środowisku platformy Azure.
Wszystkie rodzaje błędów zwracają kod błędu, którego należy użyć do rozwiązania problemów z wdrożeniem. Błędy weryfikacji i weryfikacji wstępnej są wyświetlane w dzienniku aktywności, ale nie pojawiają się w historii wdrażania.
Wymagania wstępne
Do ukończenia tego przewodnika Szybki start potrzebne są następujące elementy:
- Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Program Visual Studio Code z najnowszym rozszerzeniem narzędzi usługi Azure Resource Manager.
- Zainstaluj najnowszą wersję programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure.
Tworzenie szablonu z błędami
Skopiuj poniższy szablon i zapisz go lokalnie. Ten plik służy do rozwiązywania problemów z błędem walidacji, błędem wstępnym i błędem wdrożenia. W tym przewodniku Szybki start założono, że nazwa pliku została nazwana troubleshoot.json , ale możesz użyć dowolnej nazwy.
{
"$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')]"
}
}
}
Naprawianie błędu sprawdzania poprawności
Otwórz plik w programie Visual Studio Code. Falisty wiersz poniżej parameterss:
wskazuje błąd. Aby wyświetlić błąd weryfikacji, umieść wskaźnik myszy na błędzie.
Zauważysz, że variables
błędy resources
dotyczące niezdefiniowanego odwołania do parametrów. Aby wyświetlić błędy walidacji szablonu, wybierz pozycję Wyświetl>problemy.
Wszystkie błędy są spowodowane nieprawidłową pisownią nazwy elementu.
"parameterss": {
Komunikat o błędzie stwierdza , że weryfikacja szablonu nie powiodła się: nie można odnaleźć elementu członkowskiego "parameterss" dla obiektu typu "Template". Ścieżka "parameterss", wiersz 4, pozycja 16.
Składnia szablonu usługi ARM dla parametrów pokazuje, że parameters
jest to poprawna nazwa elementu.
Aby naprawić błąd weryfikacji i błędy odwołania do niezdefiniowanych parametrów, popraw pisownię i zapisz plik.
"parameters": {
Naprawianie błędu wstępnego
Aby utworzyć błąd weryfikacji wstępnej, użyjesz nieprawidłowej wartości dla parametru prefixName
.
W tym przewodniku Szybki start użyto funkcji troubleshootRG dla nazwy grupy zasobów, ale możesz użyć dowolnej nazwy.
az group create --name troubleshootRG --location westus
az deployment group create \
--resource-group troubleshootRG \
--template-file troubleshoot.json \
--parameters prefixName=long!!StoragePrefix
Walidacja wstępna szablonu kończy się niepowodzeniem i wdrożenie nie jest uruchamiane. Zawiera prefixName
więcej niż 11 znaków i zawiera znaki specjalne i wielkie litery.
Nazwy magazynu muszą zawierać od 3 do 24 znaków i używać tylko małych liter i cyfr. Wartość prefiksu utworzyła nieprawidłową nazwę magazynu. Aby uzyskać więcej informacji, zobacz Naprawianie błędów dotyczących nazw kont magazynu. Aby naprawić błąd wstępny, użyj prefiksu zawierającego co najmniej 11 znaków i zawiera tylko małe litery lub cyfry.
Ponieważ wdrożenie nie zostało uruchomione, nie ma historii wdrożenia.
W dzienniku aktywności jest wyświetlany błąd wstępny. Wybierz dziennik, aby wyświetlić szczegóły błędu.
Naprawianie błędu wdrażania
Uruchom wdrożenie z prawidłową wartością prefiksu, na przykład storage
.
az group create --name troubleshootRG --location westus
az deployment group create \
--resource-group troubleshootRG \
--template-file troubleshoot.json \
--parameters prefixName=storage
Wdrożenie rozpoczyna się i jest widoczne w historii wdrażania. Wdrożenie kończy się niepowodzeniem, ponieważ outputs
odwołuje się do sieci wirtualnej, która nie istnieje w grupie zasobów. Nie wystąpiły jednak żadne błędy dla konta magazynu, więc zasób został wdrożony. Historia wdrażania pokazuje nieudane wdrożenie.
Aby naprawić błąd wdrożenia, zmień funkcję referencyjną, aby użyć prawidłowego zasobu. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z błędami nie odnalezionych zasobów. W tym przewodniku Szybki start usuń przecinek poprzedzający vnetResult
i wszystkie .vnetResult
Zapisz plik i uruchom ponownie wdrożenie.
"vnetResult": {
"type": "object",
"value": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'doesnotexist'), '2021-03-01', 'Full')]"
}
Po naprawieniu błędów walidacji wstępne i wdrożenia poniższy szablon wdraża konto magazynu. Historia wdrożenia i dziennik aktywności pokazują pomyślne wdrożenie.
{
"$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')]"
}
}
}
Czyszczenie zasobów
Gdy zasoby platformy Azure nie są już potrzebne, usuń grupę zasobów.
az group delete --name troubleshootRG
Aby usunąć grupę zasobów z portalu, wykonaj następujące kroki:
- W witrynie Azure Portal wprowadź ciąg Grupy zasobów w polu wyszukiwania.
- W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
- Wybierz nazwę grupy zasobów.
- Wybierz pozycję Usuń grupę zasobów.
- Aby potwierdzić usunięcie, wprowadź nazwę grupy zasobów, a następnie wybierz pozycję Usuń.
Następne kroki
W tym przewodniku Szybki start przedstawiono sposób rozwiązywania problemów z błędami wdrażania szablonu usługi ARM.