Exercice – Refactoriser votre modèle pour utiliser les modules
Dans cet exercice, vous allez mettre à jour le modèle Bicep que vous avez créé précédemment afin qu’il utilise un module pour les ressources Azure App Service. Grâce aux modules, la finalité du modèle principal reste plus claire. Si vous le souhaitez, vous pouvez réutiliser le module App Service dans d’autres modèles.
Pendant ce processus, vous allez :
- Ajouter un nouveau module et y placer les ressources App Service.
- Référencer le module à partir du modèle Bicep principal.
- Ajouter une sortie pour le nom d’hôte de l’application App Service et l’émettre à partir des déploiements de modèle et de module.
- Tester le déploiement pour vous assurer que le modèle est valide.
Ajouter un nouveau fichier de module
Dans Visual Studio Code, créez un nouveau dossier appelé modules dans le même dossier que celui où vous avez créé votre fichier main.bicep. Dans le dossier modules, créez un fichier appelé appService.bicep. Enregistrez le fichier .
Ajoutez le contenu suivant dans le fichier appService.bicep :
param location string param appServiceAppName string @allowed([ 'nonprod' 'prod' ]) param environmentType string var appServicePlanName = 'toy-product-launch-plan' var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1' 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 avez copié les paramètres et les variables à partir de votre modèle main.bicep, car le modèle appService.bicep doit être autonome.
Enregistrez les modifications du fichier. Notez que Visual Studio Code n’utilise pas le soulignement ondulé rouge pour signaler des avertissements concernant des variables manquantes, des paramètres manquants ou des ressources non valides.
Ajouter une référence au module à partir du modèle parent
Maintenant que vous disposez d’un module complet pour déployer les ressources App Service, vous pouvez faire référence au module dans le modèle parent. Dans la mesure où le module déploie les ressources App Service, vous pouvez supprimer les ressources et variables associées du modèle parent.
Dans le fichier main.bicep, supprimez les ressources App Service ainsi que les définitions de variables
appServicePlanName
etappServicePlanSkuName
. Ne supprimez pas les paramètres à App Service car vous en avez toujours besoin. En outre, ne supprimez pas les paramètres, la variable ni les ressources du compte de stockage.En bas du fichier main.bicep, ajoutez le code Bicep suivant :
module appService 'modules/appService.bicep' = { name: 'appService' params: { location: location appServiceAppName: appServiceAppName environmentType: environmentType } }
Notez que vous spécifiez les paramètres de votre module en référençant les paramètres dans le modèle parent.
Enregistrez les modifications du fichier.
Ajouter le nom d’hôte en tant que sortie
Ajoutez le code Bicep suivant en bas du fichier appService.bicep :
output appServiceAppHostName string = appServiceApp.properties.defaultHostName
Ce code déclare qu’une sortie pour ce module, nommée
appServiceAppHostName
, sera de typestring
. La sortie prendra sa valeur à partir de la propriétédefaultHostName
de l’application App Service.Enregistrez les modifications du fichier.
Cette sortie est déclarée dans un fichier Bicep que nous allons utiliser comme module, elle sera donc disponible uniquement pour le modèle parent. Vous devez également retourner la sortie à la personne qui déploie le modèle.
Ouvrez le fichier main.bicep et ajoutez le code suivant en bas du fichier :
output appServiceAppHostName string = appService.outputs.appServiceAppHostName
Notez que cette sortie est déclarée de la même façon que la sortie dans le module. Mais cette fois, vous référencez la sortie du module au lieu d’une propriété de ressource.
Enregistrez les modifications du fichier.
Vérifier vos fichiers 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 storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountSkuName
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
module appService 'modules/appService.bicep' = {
name: 'appService'
params: {
location: location
appServiceAppName: appServiceAppName
environmentType: environmentType
}
}
output appServiceAppHostName string = appService.outputs.appServiceAppHostName
Votre fichier appService.bicep doit ressembler à l’exemple suivant :
param location string
param appServiceAppName string
@allowed([
'nonprod'
'prod'
])
param environmentType string
var appServicePlanName = 'toy-product-launch-plan'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
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
}
}
output appServiceAppHostName string = appServiceApp.properties.defaultHostName
Si l’un ou l’autre des fichiers ne correspond pas, copiez l’exemple ou modifiez votre modèle 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
Vérifier votre déploiement
Dans votre navigateur, retournez au portail Azure. Accédez à votre groupe de ressources. Vous pouvez désormais voir 2 déploiements réussis.
Sélectionnez le lien 2 opérations réussies. Notez que vous avez un déploiement appelé main dans la liste, ainsi qu’un nouveau déploiement appelé appService.
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 que le déploiement de notre module s’affiche dans la liste.
Sélectionnez l’onglet Sorties. Notez qu’il existe une sortie appelée appServiceAppHostName avec le nom d’hôte de votre application App Service. Copiez le nom d’hôte dans le presse-papiers.
Ouvrez un nouvel onglet de navigateur et collez le nom d’hôte que vous avez copié. Vous devez voir la page d’accueil d’App Service par défaut.
Félicitations ! Vous avez bien déployé les bases pour une bonne application.