Démarrage rapide : Résolution des problèmes de déploiement JSON de modèles ARM
Ce guide de démarrage rapide explique comment résoudre les erreurs de déploiement JSON des modèles Azure Resource Manager (ARM). Vous allez configurer un modèle avec des erreurs et apprendre à corriger les erreurs.
Un modèle Azure Resource Manager est un fichier JSON (JavaScript Object Notation) qui définit l’infrastructure et la configuration de votre projet. Le modèle utilise la syntaxe déclarative. Vous décrivez votre déploiement prévu sans écrire la séquence de commandes de programmation pour créer le déploiement.
Il existe trois types d’erreurs liées à un déploiement :
- Les erreurs de validation se produisent avant le début d’un déploiement et sont provoquées par des erreurs de syntaxe dans votre fichier. Un éditeur de code comme Visual Studio Code peut identifier ces erreurs.
- Des erreurs de validation préalable se produisent lorsqu’une commande de déploiement est exécutée, mais que les ressources ne sont pas déployées. Ces erreurs sont détectées sans commencer le déploiement. Par exemple, si une valeur de paramètre est incorrecte, l’erreur est détectée lors de la validation préalable.
- Les erreurs de déploiement se produisent pendant le processus de déploiement et ne peuvent être détectées qu’en évaluant la progression du déploiement dans votre environnement Azure.
Tous les types d’erreurs retournent un code d’erreur que vous utilisez pour résoudre les problèmes de déploiement. Les erreurs de validation et les erreurs de vérification préalable sont affichées dans le journal d’activité, mais n’apparaissent pas dans votre historique de déploiement.
Prérequis
Pour suivre ce guide de démarrage rapide, vous devez disposer des éléments suivants :
- Si vous ne disposez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
- Visual Studio Code avec la dernière version de l’extension Outils Azure Resource Manager
- Installez la version la plus récente d’Azure PowerShell ou Azure CLI.
Création d’un modèle comportant des erreurs
Copiez le modèle suivant et enregistrez-le localement. Vous allez utiliser ce fichier pour résoudre une erreur de validation, une erreur validation préalable et une erreur de déploiement. Ce guide de démarrage rapide part du principe que vous avez nommé le fichier troubleshoot.json, mais vous pouvez lui attribuer n’importe quel nom.
{
"$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')]"
}
}
}
Corriger une erreur de validation
Ouvrez le fichier dans Visual Studio Code. La ligne ondulée sous parameterss:
indique une erreur. Pour afficher l’erreur de validation, pointez sur l’erreur.
Vous remarquerez que variables
et resources
présentent des erreurs liées à une référence de paramètre non définie. Pour afficher les erreurs de validation du modèle, sélectionnez Afficher>Problèmes.
Toutes les erreurs sont dues à l’orthographe incorrecte d’un nom d’élément.
"parameterss": {
Le message d’erreur indique que Échec de la validation du modèle : le membre « parameterss » est introuvable sur l’objet de type « Template ». Chemin « parameterss », ligne 4, position 16.
La syntaxe du modèle ARM pour parameters indique que parameters
est le nom d’élément correct.
Pour corriger l’erreur de validation et les erreurs de référence de paramètre non définie, corrigez l’orthographe et enregistrez le fichier.
"parameters": {
Corriger une erreur de validation préalable
Pour créer une erreur de validation préalable, vous affecterez une valeur incorrecte au paramètre prefixName
.
Ce guide de démarrage rapide utilise troubleshootRG comme nom du groupe de ressources, mais vous pouvez utiliser n’importe quel nom.
az group create --name troubleshootRG --location westus
az deployment group create \
--resource-group troubleshootRG \
--template-file troubleshoot.json \
--parameters prefixName=long!!StoragePrefix
La validation préalable du modèle échoue et le déploiement n’est pas exécuté. Le prefixName
comporte plus de 11 caractères, et contient des caractères spéciaux et des lettres majuscules.
Les noms de stockage doivent avoir entre 3 et 24 caractères de type lettres minuscules et chiffres. La valeur de préfixe a créé un nom de stockage non valide. Pour plus d’informations, voir Résoudre les erreurs liées aux noms de compte de stockage. Pour corriger l’erreur de vérification préalable, utilisez un préfixe de 11 caractères ou moins et ne contenant que des lettres minuscules ou des chiffres.
Étant donné que le déploiement n’a pas été exécuté, il n’y a pas d’historique de déploiement.
Le journal d’activité affiche l’erreur de vérification préalable. Sélectionnez le journal pour afficher les détails de l’erreur.
Corriger une erreur de déploiement
Exécutez le déploiement avec une valeur de préfixe valide, comme storage
.
az group create --name troubleshootRG --location westus
az deployment group create \
--resource-group troubleshootRG \
--template-file troubleshoot.json \
--parameters prefixName=storage
Le déploiement commence et est visible dans l’historique des déploiements. Le déploiement échoue car outputs
référence un réseau virtuel qui n’existe pas dans le groupe de ressources. Toutefois, aucune erreur n’a été détectée pour le compte de stockage. La ressource est donc déployée. L’historique des déploiements montre un échec de déploiement.
Pour corriger l’erreur de déploiement, modifiez la fonction de référence de façon à utiliser une ressource valide. Pour plus d’informations, consultez Résoudre les erreurs liées à des ressources introuvables. Pour ce guide de démarrage rapide, supprimez la virgule qui précède vnetResult
et tout vnetResult
. Enregistrez le fichier et réexécutez le déploiement.
"vnetResult": {
"type": "object",
"value": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'doesnotexist'), '2021-03-01', 'Full')]"
}
Une fois les erreurs de validation, de vérification préalable et de déploiement corrigées, le modèle suivant déploie un compte de stockage. L’historique des déploiements et le journal d’activité affichent un déploiement réussi.
{
"$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')]"
}
}
}
Nettoyer les ressources
Lorsque les ressources Azure ne sont plus nécessaires, supprimez le groupe de ressources.
az group delete --name troubleshootRG
Pour supprimer le groupe de ressources à partir du portail, procédez comme suit :
- Dans le portail Azure, entrez Groupes de ressources dans la zone de recherche.
- Dans le champ Filtrer par nom, entrez le nom du groupe de ressources.
- Sélectionnez le nom du groupe de ressources.
- Sélectionnez Supprimer le groupe de ressources.
- Pour confirmer la suppression, entrez le nom du groupe de ressources, puis sélectionnez Supprimer.
Étapes suivantes
Dans ce guide de démarrage rapide, vous avez appris à résoudre les erreurs de déploiement des modèles ARM.