Exercice – Ajouter des paramètres et des variables à votre modèle Bicep
Dans cet exercice, vous allez mettre à jour le modèle Bicep que vous avez créé précédemment afin que celui-ci:\
- Accepte des paramètres pour les noms et les emplacements de ressources.
- Utilise vos règles d’entreprise pour sélectionner les références SKU appropriées pour les ressources qui sont déployées.
Pendant ce processus, vous allez :
- Mettre à jour le modèle pour inclure un paramètre
location
. - Mettre à jour le modèle pour inclure des paramètres et des variables pour les noms de ressources.
- Utiliser des expressions pour définir les valeurs par défaut des paramètres.
- Mettre à jour le modèle pour inclure des variables pour la référence SKU de chaque ressource.
- Tester le déploiement pour vous assurer que le modèle est valide.
Ajouter les paramètres de nom de ressources et d’emplacement
Dans le fichier main.bicep dans Visual Studio Code, ajoutez le code suivant en haut du fichier :
param location string = 'eastus' param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}' param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}' var appServicePlanName = 'toy-product-launch-plan'
Le linter Bicep ajoute des lignes ondulées jaunes sous chacun des noms de paramètre et de variable pour indiquer que vous ne les utilisez pas dans le modèle. Vous allez bientôt corriger ce problème.
Notez que vous utilisez des expressions qui incluent l’interpolation de chaîne et la fonction
uniqueString()
pour définir des valeurs de paramètre par défaut. Une personne qui déploie ce modèle peut remplacer les valeurs de paramètre par défaut en spécifiant les valeurs au moment du déploiement, mais elle ne peut pas remplacer les valeurs des variables.Notez aussi que vous utilisez une variable pour le nom du plan Azure App Service, mais que vous utilisez des paramètres pour les autres noms. Les comptes de stockage et les applications App Service ont besoin de noms globaux uniques. Toutefois, les noms de plans App Service doivent être uniques seulement au sein de leur groupe de ressources. Cette différence signifie qu’il est possible d’utiliser le même nom de plan App Service dans différents déploiements, à condition que les déploiements soient tous dans des groupes de ressources différents.
Conseil
Vous spécifiez que le paramètre
location
doit être défini surwestus3
. Normalement, vous créez des ressources au même emplacement que le groupe de ressources en utilisant la propriétéresourceGroup().location
. Cependant, quand vous travaillez avec le bac à sable (sandbox) Microsoft Learn, vous devez utiliser certaines régions Azure qui ne correspondent pas à l’emplacement du groupe de ressources.Recherchez les emplacements dans les définitions de ressources où les propriétés
location
etname
sont définies, puis mettez-les à jour pour utiliser les valeurs de paramètres. Une fois que vous avez terminé, les définitions de ressource dans votre fichier Bicep devraient ressembler à ceci :resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = { name: storageAccountName location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' properties: { accessTier: 'Hot' } } resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: 'F1' } } resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
Enregistrez les modifications du fichier.
Définir automatiquement les références SKU pour chaque type d’environnement
Dans le fichier main.bicep dans Visual Studio Code, ajoutez le paramètre Bicep suivant sous les paramètres que vous avez créés au cours de la tâche précédente :
@allowed([ 'nonprod' 'prod' ]) param environmentType string
Notez que vous définissez un paramètre avec un ensemble de valeurs autorisées, mais que vous ne spécifiez pas de valeur par défaut pour ce paramètre.
Sous la ligne qui déclare la variable
appServicePlanName
, ajoutez les définitions de variables suivantes :var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS' var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
Notez que vous définissez ces valeurs de variables à l’aide de l’opérateur ternaire pour exprimer une logique
if/then/else
.Recherchez les emplacements dans les définitions de ressources où les propriétés
sku
sont définies, puis mettez-les à jour pour utiliser les valeurs des paramètres. Une fois que vous avez terminé, les définitions de ressource dans votre fichier Bicep devraient ressembler à ceci :resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = { name: storageAccountName location: location sku: { name: storageAccountSkuName } kind: 'StorageV2' properties: { accessTier: 'Hot' } } resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
Notez que vous n’avez pas tout paramétré. Vous avez défini des propriétés directement dans les définitions de ressources quand vous savez que celles-ci ne varient pas entre les différents déploiements.
Enregistrez les modifications du fichier.
Vérifier votre fichier Bicep
Une fois que vous avez effectué toutes les modifications précédentes, votre fichier main.bicep doit ressembler à l’exemple suivant :
param location string = 'eastus'
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}'
@allowed([
'nonprod'
'prod'
])
param environmentType string
var appServicePlanName = 'toy-product-launch-plan'
var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountSkuName
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSkuName
}
}
resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
name: appServiceAppName
location: location
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
Si votre fichier ne correspond pas, copiez l’exemple ou modifiez votre fichier pour qu’il corresponde à l’exemple.
Déployer le modèle Bicep mis à jour
Exécutez la commande Azure CLI suivante dans le terminal.
az deployment group create \
--template-file main.bicep \
--parameters environmentType=nonprod
Exécutez la commande Azure PowerShell suivante dans le terminal.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-environmentType nonprod
Notez que vous spécifiez explicitement la valeur du paramètre environmentType
quand vous exécutez le déploiement. Vous n’avez pas besoin de spécifier les autres valeurs de paramètres, car des valeurs par défaut valides sont spécifiées.
Vérifier votre déploiement
Dans votre navigateur, retournez au portail Azure et allez vers votre groupe de ressources. Vous verrez toujours un déploiement réussi parce que le déploiement a utilisé le même nom que le premier déploiement.
Sélectionnez le lien 1 Réussi.
Sélectionnez le déploiement appelé main, puis sélectionnez Détails du déploiement pour développer la liste des ressources déployées.
Notez qu’une nouvelle application App Service et un nouveau compte de stockage ont été déployés avec des noms générés de façon aléatoire.