Créer un fichier de paramètres pour le déploiement Bicep

Les fichiers de paramètres Bicep vous permettent de définir les valeurs des paramètres dans un fichier distinct et de les transmettre à votre fichier main.bicep. Ils sont parfaits pour les valeurs qui varient selon l’abonnement, l’environnement ou la région.

Les principaux avantages sont les suivants :

  • Maintenez la cohérence entre les déploiements d’Infrastructure as Code (IaC) tout en activant la flexibilité.
  • Prise en charge de l’optimisation des coûts, comme le dimensionnement approprié des environnements hors production sans modifier l’infrastructure de base.
  • Activez les pipelines CI/CD rationalisés en conservant les fichiers de paramètres dans le contrôle de code source et en passant le fichier approprié à chaque phase de déploiement.

Remarque

Les fichiers de paramètres Bicep sont pris en charge uniquement dans Bicep CLI version 0.18.4 ou ultérieure, Azure CLI version 2.47.0 ou ultérieure, et Azure PowerShell version 9.7.1 ou ultérieure.

Vous pouvez utiliser au choix :

  • Un fichier de paramètres Bicep natif (extension .bicepparam), ou
  • Fichier de paramètres JSON standard.

L’extension de fichier pour un fichier de paramètres Bicep est .bicepparam.

Pour effectuer un déploiement sur plusieurs environnements, créez plusieurs fichiers de paramètres. Lorsque vous utilisez plusieurs fichiers de paramètres, étiquetez-les en fonction de leur utilisation. Par exemple, pour déployer des ressources, utilisez l’étiquette main.dev.bicepparam pour le développement et l’étiquette main.prod.bicepparam pour la production.

Vous pouvez compiler des fichiers de paramètres Bicep en fichiers de paramètres JSON que vous pouvez déployer à l’aide d’un fichier Bicep. Pour plus d’informations, consultez build-params. Vous pouvez également décompiler un fichier de paramètres JSON dans un fichier de paramètres Bicep. Pour plus d’informations, consultez decompile-params.

Warning

Un fichier de paramètres enregistre les valeurs de paramètre en texte brut. Pour des raisons de sécurité, n’utilisez pas cette approche avec des valeurs sensibles telles que des mots de passe. Si vous devez passer un paramètre avec une valeur sensible, conservez cette valeur dans un coffre-fort de clés. Au lieu d’ajouter une valeur sensible à votre fichier de paramètres, utilisez la getSecretfonction pour la récupérer. Pour plus d’informations, consultez Utiliser Azure Key Vault pour transmettre un secret en tant que paramètre pendant le déploiement Bicep.

Définir un fichier de paramètres

Un fichier de paramètres utilise le format suivant :

using '<path>/<file-name>.bicep' | using none
extends '<path>/<file-name>.bicepparam' 

type <user-defined-data-type-name> = <type-expression>

var <variable-name> <data-type> = <variable-value>

import {<symbol_name> [as <alias_name>], ...} from '<bicep_file_name>'

param <first-parameter-name> = <first-value>
param <second-parameter-name> = <second-value>
param <third-parameter-name> = <variable-name>

Pour déterminer comment définir des noms de paramètres et des valeurs, ouvrez votre fichier Bicep. Consultez la section Paramètres du fichier Bicep. Les exemples suivants montrent les paramètres d’un fichier Bicep nommé main.bicep:

@maxLength(11)
param storagePrefix string

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

Dans le fichier de paramètres, utilisez le nom de chaque paramètre. Les noms des paramètres de votre fichier de paramètres doivent correspondre à ceux de votre fichier Bicep.

using 'main.bicep'

param storagePrefix
param storageAccountType

L’instruction using associe le fichier de paramètres Bicep à un fichier Bicep. Vous pouvez associer plusieurs fichiers de paramètres à un seul fichier Bicep. Chaque fichier de paramètres est généralement lié à un fichier de Bicep spécifique à l’aide de l’instruction using.

Utilisez using none si vous ne souhaitez pas lier le fichier de paramètres à un fichier Bicep particulier. Bicep CLI version 0.31.0 ou ultérieure prend en charge la fonctionnalité using none.

Si vous souhaitez en savoir plus, veuillez consulter la rubrique Instruction d’utilisation.

L’instruction extends hérite des paramètres d’un fichier de base .bicepparam , ce qui permet aux valeurs de paramètres d’être réutilisées et remplacées de manière sélective dans le fichier de paramètres actuel. Pour plus d’informations, consultez les fichiers de paramètres extensibles.

Lorsque vous tapez le mot clé param dans Visual Studio Code, il vous invite à entrer les paramètres disponibles et leurs descriptions à partir du fichier Bicep lié.

Capture d’écran de l’invite des paramètres disponibles.

Lorsque vous pointez sur un nom param, vous pouvez voir le type de données et la description du paramètre.

Capture d’écran du type et de la description de la donnée paramètre.

Vérifiez le type de paramètre, car les types de paramètres de votre fichier de paramètres doivent utiliser les mêmes types que votre fichier Bicep. Dans cet exemple, les deux types de paramètres sont des chaînes :

using 'main.bicep'

param storagePrefix = ''
param storageAccountType = ''

Vérifiez dans le fichier Bicep les paramètres qui incluent une valeur par défaut. Si un paramètre a une valeur par défaut, vous pouvez fournir une valeur dans le fichier de paramètres, mais vous n’avez pas besoin de le faire. La valeur du fichier de paramètres remplace la valeur par défaut du fichier Bicep.

using 'main.bicep'

param storagePrefix = '' // This value must be provided.
param storageAccountType = '' // This value is optional. Bicep uses default value if not provided.

Pour voir s’il existe des restrictions telles que la longueur maximale, vérifiez les valeur autorisées du fichier Bicep. Les valeurs autorisées spécifient la plage de valeurs que vous pouvez fournir pour un paramètre. Dans cet exemple, storagePrefix peut avoir un maximum de 11 caractères et storageAccountType doit spécifier une valeur autorisée.

using 'main.bicep'

param storagePrefix = 'storage'
param storageAccountType = 'Standard_ZRS'

L’exemple suivant illustre les formats de différents types de paramètres : chaîne, entier, Booléen, tableau et objet.

using './main.bicep'

param exampleString = 'test string'
param exampleInt = 2 + 2
param exampleBool = true
param exampleArray = [
  'value 1'
  'value 2'
]
param exampleObject = {
  property1: 'value 1'
  property2: 'value 2'
}

Utilisez la syntaxe Bicep pour déclarer des objets et des tableaux.

Vous pouvez utiliser des expressions comme valeurs de paramètre. Exemple :

using './main.bicep'

param storageName = toLower('MyStorageAccount')
param intValue = 2 + 2

Vous pouvez référencer des variables d’environnement en tant que valeurs de paramètre. Exemple :

using './main.bicep'

param intFromEnvironmentVariables = int(readEnvironmentVariable('intEnvVariableName'))

Vous pouvez définir et utiliser des variables. Vous devez utiliser Bicep CLI version 0.21.X ou ultérieure pour utiliser des variables dans les fichiers .bicepparam. Regardez les exemples suivants :

using './main.bicep'

var storagePrefix = 'myStorage'
param primaryStorageName = '${storagePrefix}Primary'
param secondaryStorageName = '${storagePrefix}Secondary'
using './main.bicep'

var testSettings = {
  instanceSize: 'Small'
  instanceCount: 1
}

var prodSettings = {
  instanceSize: 'Large'
  instanceCount: 4
}

param environmentSettings = {
  test: testSettings
  prod: prodSettings
}

Vous pouvez définir des types de données définis par l’utilisateur. Exemple :

using './main.bicep'

// Define a reusable type for tags with optional properties
type TagValues = {
  environment: 'dev' | 'test' | 'production'
  project: string
}

var tagsExample TagValues = {
  environment: 'dev'
  project: 'bicep-sample'
}

param tags = tagsExample

Vous pouvez également importer des variables, des types de données définis par l’utilisateur et des fonctions définies par l’utilisateur à partir d’un fichier Bicep. Pour plus d’informations, consultez Importer.

Fichier de paramètres extensibles

Pour plus d’informations, consultez Le fichier Étendre les paramètres.

Générer et créer un fichier de paramètres

Vous pouvez créer un fichier de paramètres en utilisant Visual Studio Code ou Bicep CLI. Les deux outils vous permettent d’utiliser un fichier Bicep pour générer un fichier de paramètres. Consultez Générer un fichier de paramètres pour la méthode avec Visual Studio Code, et Générer un fichier de paramètres pour la méthode avec Bicep CLI.

À partir de l’interface CLI Bicep, vous pouvez générer un fichier de paramètres Bicep dans un fichier de paramètres JSON. Pour plus d’informations, consultez Créer un fichier de paramètres.

Déployer le fichier Bicep avec le fichier de paramètres

Vous pouvez utiliser des paramètres inclus et un fichier de paramètres local pendant la même opération de déploiement. Par exemple, vous pouvez spécifier certaines valeurs dans le fichier de paramètres local et ajouter d’autres valeurs incluses pendant le déploiement. Si vous fournissez des valeurs pour un paramètre à la fois dans le fichier de paramètres local et inclus, la valeur incluse est prioritaire.

Bien que les fichiers de paramètres Bicep externes ne soient actuellement pas pris en charge, vous pouvez utiliser un fichier de paramètres JSON externe en fournissant l’URI au fichier. Lorsque vous utilisez un fichier de paramètres externe, fournissez toutes les valeurs de paramètres dans le fichier externe. Quand vous utilisez un fichier externe, vous ne pouvez pas transmettre d’autres valeurs, qu’elles soient incluses ou extraites d’un fichier local, et tous les paramètres en ligne sont ignorés.

L’exemple suivant montre un exemple Azure CLI pour utiliser un fichier de paramètres JSON externe :

az deployment group create \
  --resource-group my-rg \
  --template-file main.bicep \
  --parameters https://storageaccount.blob.core.windows.net/templates/main.parameters.json

Azure CLI

À partir d’Azure CLI, vous pouvez transmettre un fichier de paramètres avec votre déploiement de fichiers Bicep.

Vous pouvez déployer un fichier Bicep en utilisant un fichier de paramètres Bicep avec Azure CLI version 2.53.0 ou ultérieure, et avec Bicep CLI version 0.22.X ou ultérieure. En utilisant l'instruction using dans le fichier de paramètres Bicep, vous n'avez pas besoin de fournir le commutateur --template-file lors de la spécification d'un fichier de paramètres Bicep pour le commutateur --parameters.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam

Vous pouvez utiliser des paramètres inclus et un fichier de paramètres d’emplacement pendant la même opération de déploiement. Exemple :

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam \
  --parameters storageAccountType=Standard_LRS

Pour plus d’informations, consultez Déployer des fichiers Bicep en utilisant Azure CLI.

Azure PowerShell

À partir de Azure PowerShell, transmettez un fichier de paramètres local en utilisant le paramètre TemplateParameterFile.

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.bicep `
  -TemplateParameterFile C:\MyTemplates\storage.bicepparam

Vous pouvez utiliser des paramètres inclus et un fichier de paramètres d’emplacement pendant la même opération de déploiement. Exemple :

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.bicep `
  -TemplateParameterFile C:\MyTemplates\storage.bicepparam `
  -storageAccountType Standard_LRS

Pour plus d’informations, consultez Déployer des fichiers Bicep avec PowerShell. Pour déployer des fichiers .bicep, vous avez besoin d’Azure PowerShell version 5.6.0 ou ultérieure.

Si votre fichier Bicep inclut un paramètre utilisant le même nom que l'un des paramètres de la commande Azure PowerShell, Azure PowerShell présente le paramètre de votre fichier Bicep avec le suffixe FromTemplate. Par exemple, si un paramètre nommé ResourceGroupName dans votre fichier Bicep est en conflit avec le paramètre ResourceGroupName dans la New-AzResourceGroupDeploymentcmdlet , vous êtes invité à fournir une valeur pour ResourceGroupNameFromTemplate. Pour éviter cette confusion, utilisez des noms de paramètres qui ne sont pas utilisés pour les commandes de déploiement.