Démarrage rapide : Résoudre les problèmes de déploiement de fichiers Bicep

Ce guide de démarrage rapide explique comment résoudre les erreurs de déploiement de fichier Bicep. Vous allez créer un fichier comportant des erreurs et apprendre à les corriger.

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. Un fichier Bicep avec des erreurs de syntaxe ne se compile pas en JSON et n’est pas affiché dans le journal d’activité.

Prérequis

Pour suivre ce guide de démarrage rapide, vous devez disposer des éléments suivants :

Créer un fichier Bicep comportant des erreurs

Copiez le fichier Bicep suivant, puis 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 suppose que vous avez nommé le fichier troubleshoot.bicep, mais vous pouvez lui attribuer n’importe quel nom.

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

@description('Prefix for storage name.')
param prefixName string

var storageAccountName = '${prefixName}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: resourceGroup().location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

resource existingVNet 'Microsoft.Network/virtualNetworks@2021-03-01' existing = {
  name: 'doesnotexist'
}

output storageAccountName string = storageAccountName
output vnetResult object = existingVNet

Corriger une erreur de validation

Ouvrez le fichier dans Visual Studio Code. Vous remarquerez que Visual Studio Code identifie une erreur de syntaxe. La déclaration du premier paramètre est marquée avec des soulignements ondulés rouges pour indiquer une erreur.

Capture d'écran de Visual Studio Code avec des gribouillis rouges mettant en évidence une erreur de syntaxe dans un fichier Bicep.

Les lignes signalées comme contenant une erreur sont les suivantes :

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

Lorsque vous passez la souris sur parameter, un message d’erreur s’affiche.

Capture d'écran d'un message d'erreur détaillé affiché dans Visual Studio Code lors du survol d'une erreur de syntaxe dans un fichier Bicep.

Le message indique : Ce type de déclaration n’est pas reconnu. Spécifiez un paramètre, une variable, une ressource ou une déclaration de sortie. Si vous tentez de déployer ce fichier, la commande de déploiement affiche ce même message d’erreur.

Si vous recherchez une déclaration de paramètre dans la documentation, vous voyez que le mot clé est en fait param. Lorsque vous changez cette syntaxe, l’erreur de validation disparaît. L’élément décoratif @allowed était également marqué comme constituant une erreur, mais cette erreur est également résolue en changeant la déclaration du paramètre. L’élément décoratif a été marqué comme constituant une erreur, car il attend une déclaration de paramètre après lui. Cette condition n’était pas remplie lorsque la déclaration était incorrecte.

La ligne corrigée se présente ainsi :

param storageAccountType string = 'Standard_LRS'

Corriger une erreur de validation préalable

Maintenant que vous avez corrigé l’erreur de validation, il est temps de déployer le fichier. Toutefois, vous allez fournir une valeur de paramètre incorrecte pour voir une erreur de validation préalable.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.bicep \
  --parameters prefixName=longNamewith!!Charactersthatarenotallowed

Azure Resource Manager détermine que le nom du compte de stockage contient des caractères qui ne sont pas autorisés. Il ne tente pas le déploiement.

Un message d’erreur indiquant que la validation préalable a échoué s’affiche. Vous obtenez également un message indiquant que le nom du compte de stockage doit comprendre entre 3 et 24 caractères, et être composé uniquement de lettres minuscules et de nombres. Le préfixe que vous avez fourni ne répondait pas à cet impératif. Pour plus d’informations sur ce code d’erreur, consultez Résoudre les erreurs liées aux noms de compte de stockage.

Étant donné que l’erreur a été interceptée lors de la validation préalable, aucun déploiement ne figure dans l’historique.

Capture d'écran de la section « Historique des déploiements » du portail Azure, qui ne montre aucun déploiement pour un fichier Bicep.

Toutefois, le déploiement ayant échoué figure dans le journal d’activité.

Capture d'écran du journal d'activité du portail Azure affichant une erreur de validation pré-vol pour un déploiement de fichiers Bicep.

Vous pouvez ouvrir les détails de l’entrée de journal pour voir le message d’erreur.

Corriger une erreur de déploiement

Vous allez redéployer le fichier et fournir une valeur autorisée pour le paramètre de préfixe de nom.

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

Le déploiement commence mais échoue avec un message indiquant que le réseau virtuel est introuvable. En général, vous corrigez cette erreur en changeant la référence à la ressource. Dans ce guide de démarrage rapide, vous allez supprimer la référence. Pour plus d’informations sur ce code d’erreur, consultez Résoudre les erreurs liées à des ressources introuvables.

Dans le portail, notez que le déploiement figure dans l’historique.

Capture d'écran de la section « Historique des déploiements » du portail Azure, qui ne montre un échec de déploiement pour un fichier Bicep.

Vous pouvez ouvrir l’entrée dans l’historique des déploiements pour obtenir des détails sur l’erreur. L’erreur figure également dans le journal d’activité.

Le fichier Bicep tente de référencer un réseau virtuel qui n’existe pas dans votre groupe de ressources. Supprimez la référence au réseau virtuel existant pour corriger l’erreur.

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
param storageAccountType string = 'Standard_LRS'

@description('Prefix for storage name.')
param prefixName string

var storageAccountName = '${prefixName}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: resourceGroup().location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountName string = storageAccountName

Vous pouvez déployer ce fichier Bicep qui ne comporte aucune erreur.

Nettoyer les ressources

Lorsque les ressources Azure ne sont plus nécessaires, supprimez le groupe de ressources. Vous pouvez le faire à partir de Cloud Shell ou du portail Azure.

az group delete --name troubleshootRG

Pour supprimer le groupe de ressources à partir du portail, procédez comme suit :

  1. Dans le portail Azure, entrez Groupes de ressources dans la zone de recherche.
  2. Dans le champ Filtrer par nom, entrez le nom du groupe de ressources.
  3. Sélectionnez le nom du groupe de ressources.
  4. Sélectionnez Supprimer le groupe de ressources.
  5. 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 de fichier Bicep.