Fournir des valeurs à l’aide de fichiers de paramètres

Effectué

Dans les leçons précédentes, vous avez fourni les valeurs de paramètres sur la ligne de commande lors de la création d’un déploiement. Cette approche fonctionne bien quand vous écrivez et testez vos fichiers Bicep, mais elle ne fonctionne pas correctement quand les paramètres sont nombreux ni quand vous avez besoin d’automatiser vos déploiements. Dans cette leçon, vous découvrirez les différentes manières de spécifier les valeurs de paramètres.

Notes

Les commandes de cette unité sont présentées pour illustrer les concepts. N’exécutez pas encore les commandes. Vous allez bientôt mettre en pratique ce que vous apprenez ici.

Création de fichiers de paramètres

Les fichiers de paramètres permettent de spécifier facilement des valeurs de paramètres dans un ensemble. Dans le fichier de paramètres, vous fournissez des valeurs pour les paramètres de votre fichier Bicep. Les fichiers de paramètres sont créés à l’aide du langage JSON (JavaScript Object Notation). Vous pouvez fournir un fichier de paramètres quand vous déployez votre modèle Bicep. Voici ce à quoi ressemble un fichier de paramètres :

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServicePlanInstanceCount": {
      "value": 3
    },
    "appServicePlanSku": {
      "value": {
        "name": "P1v3",
        "tier": "PremiumV3"
      }
    },
    "cosmosDBAccountLocations": {
      "value": [
        {
          "locationName": "australiaeast"
        },
        {
          "locationName": "southcentralus"
        },
        {
          "locationName": "westeurope"
        }
      ]
    }
  }
}

Examinons chaque partie du fichier de paramètres plus en détail :

  • $schema aide Azure Resource Manager à comprendre qu’il s’agit d’un fichier de paramètres.
  • contentVersion est une propriété que vous pouvez utiliser pour effectuer le suivi des modifications importantes dans votre fichier de paramètres si vous le souhaitez. En règle générale, il est défini sur la valeur par défaut 1.0.0.0.
  • La section parameters répertorie chaque paramètre et la valeur que vous souhaitez utiliser. La valeur de paramètre doit être spécifiée en tant qu’objet. L’objet a une propriété appelée value qui définit la valeur de paramètre réelle à utiliser.

En règle générale, vous créez un fichier de paramètres pour chaque environnement. Il est recommandé d’inclure le nom de l’environnement dans le nom du fichier de paramètres. Par exemple, vous pouvez avoir un fichier de paramètres nommé main.parameters.dev.json pour votre environnement de développement et un autre nommé main.parameters.production.json pour votre environnement de production.

Notes

Veillez à spécifier uniquement des valeurs pour les paramètres qui existent dans votre modèle Bicep. Quand vous créez un déploiement, Azure vérifie vos paramètres et renvoie une erreur si vous avez essayé de spécifier une valeur pour un paramètre qui n’existe pas dans le fichier Bicep.

Utiliser des fichiers de paramètres au moment du déploiement

Quand vous créez un nouveau déploiement à l’aide de la commande az deployment group create, vous pouvez spécifier le nom du fichier de paramètres que vous souhaitez utiliser avec l’argument --parameters :

az deployment group create \
  --template-file main.bicep \
  --parameters main.parameters.json

Quand vous créez un nouveau déploiement à l’aide de la cmdlet New-AzResourceGroupDeployment, vous pouvez spécifier le nom du fichier de paramètres que vous souhaitez utiliser avec l’argument -TemplateParameterFile :

New-AzResourceGroupDeployment `
  -TemplateFile main.bicep `
  -TemplateParameterFile main.parameters.json

Remplacer les valeurs de paramètres

Vous avez découvert les trois façons de spécifier des valeurs de paramètres : les valeurs par défaut, la ligne de commande et les fichiers de paramètres. Il est courant d’utiliser plusieurs approches afin de spécifier des valeurs différentes pour le même paramètre. Vous avez déjà vu cette approche quand vous avez utilisé des valeurs par défaut. Quand vous créez une valeur par défaut pour un paramètre, puis spécifiez une autre valeur à l’aide de la ligne de commande, la valeur de la ligne de commande est prioritaire. Voyons comment les fichiers de paramètres sont considérés dans cet ordre de priorité.

Diagramme montrant l’ordre de priorité des valeurs de paramètres. Les fichiers de paramètres remplacent les valeurs par défaut et les valeurs de paramètres de ligne de commande remplacent les fichiers de paramètres.

Vous voyez que les fichiers de paramètres remplacent les valeurs par défaut et que les valeurs des paramètres de ligne de commande remplacent les fichiers de paramètres.

Voyons comment fonctionne cette approche. Voici un exemple de fichier Bicep qui définit trois paramètres, chacun avec des valeurs par défaut :

param location string = resourceGroup().location
param appServicePlanInstanceCount int = 1
param appServicePlanSku object = {
  name: 'F1'
  tier: 'Free'
}

Examinons un fichier de paramètres qui remplace la valeur de deux des paramètres, mais ne spécifie pas de valeur pour le paramètre location :

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServicePlanInstanceCount": {
      "value": 3
    },
    "appServicePlanSku": {
      "value": {
        "name": "P1v3",
        "tier": "PremiumV3"
      }
    }
  }
}

Quand vous créez le déploiement, nous remplaçons également la valeur de appServicePlanInstanceCount. Comme avec les fichiers de paramètres, vous utilisez l’argument --parameters, mais vous ajoutez la valeur que vous souhaitez pour remplacer sa propre valeur :

az deployment group create \
  --template-file main.bicep \
  --parameters main.parameters.json \
               appServicePlanInstanceCount=5

Quand vous créez le déploiement, vous remplacez l’une des valeurs de paramètres. Vous spécifiez le nom du paramètre comme s’il s’agissait d’un argument de la cmdlet :

New-AzResourceGroupDeployment `
  -TemplateFile main.bicep `
  -TemplateParameterFile main.parameters.json `
  -appServicePlanInstanceCount 5

Examinons les valeurs.

Paramètre Valeur Explication
location Emplacement du groupe de ressources. Le fichier Bicep spécifie ce paramètre comme valeur par défaut. Il n’est pas substitué.
appServicePlanSku Objet dont la propriété name a la valeur P1v3 et un niveau tierPremiumV3. La valeur par défaut dans le fichier Bicep est remplacée par le fichier de paramètres.
appServicePlanInstanceCount 5 La valeur spécifiée au moment du déploiement remplace la valeur par défaut et la valeur dans le fichier de paramètres.

En combinant différentes approches pour spécifier des valeurs de paramètres, vous pouvez éviter d’avoir à dupliquer des valeurs de paramètres dans de nombreux emplacements, tout en restant flexible pour les remplacer quand cela est nécessaire.