Exercice : ajouter des ressources à une pile de déploiement
Vous êtes au sprint 3 pour l’application des nouveaux dépôts. Récemment, l’équipe chargée des dépôts a demandé que des changements soient apportés à certains des services Azure en cours d'utilisation. Elle a également demandé la création d’autres services nécessaires pour soutenir l’application.
Dans cet exercice, vous créez une pile de déploiement délimitée à un groupe de ressources qui fait référence à un fichier Bicep. Le fichier définit un plan App Service, un App Service et une base de données Azure SQL. Vous modifiez ensuite la référence SKU du plan App Service et mettez à jour la pile de déploiement. Enfin, vous ajoutez un espace de travail Log Analytics existant et une nouvelle instance Application Insights pour prendre en charge la surveillance de l’application.
Pendant ce processus, vous allez :
- Créer un fichier Bicep qui définit votre architecture initiale
- Créez une pile de déploiement étendue à un groupe de ressources à l’aide de votre fichier Bicep.
- Modifiez les propriétés d’une ressource managée existante.
- Mettez à jour le fichier Bicep pour inclure un espace de travail Log Analytics existant et une nouvelle instance Application Insights.
- Mettez à jour la pile de déploiement pour déployer les ressources managées.
- Validez les ressources managées de la pile de déploiement.
Cet exercice utilise l’extension Bicep pour Visual Studio Code. Assurez-vous d’installer cette extension dans Visual Studio Code.
Créer le fichier Bicep
Notre première étape consiste à créer un fichier Bicep qui définit nos ressources à utiliser avec la pile de déploiement.
Ouvrez Visual Studio Code.
Créez un fichier nommé main.bicep.
Enregistrez le fichier vide afin que Visual Studio Code charge les outils Bicep.
Vous pouvez soit sélectionner Fichier>Enregistrer sous, soit Ctrl+S dans Windows (⌘+S sur macOS). Assurez-vous de bien noter l’emplacement de sauvegarde du fichier. Par exemple, vous pouvez créer un dossier templates où enregistrer le fichier.
Ajoutez le code Bicep suivant dans le fichier. Vous allez bientôt déployer le modèle.
// Parameters @description('The location for all resources.') param location string = 'eastus' @description('The name of the SQL database.') param sqlDatabaseName string = 'sqldb-${uniqueString(resourceGroup().id)}' @description('The password of the admin user.') param sqlServerAdminUserName string @description('The name of the admin user.') @secure() param sqlServerAdminPassword string @description('The name of the SQL server.') param sqlServerName string = 'sql-${uniqueString(resourceGroup().id)}' @description('The name of the web application.') param webApplicationName string = 'webapp-${uniqueString(resourceGroup().id)}' // Variables @description('The name of the app service plan.') var appServicePlanName = 'plan-deposits' // Resource - App Service Plan resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: 'F1' capacity: 1 } } // Resource - Web App resource webApplication 'Microsoft.Web/sites@2023-12-01' = { name: webApplicationName location: location properties: { serverFarmId: appServicePlan.id } } // Resource - SQL Server resource sqlServer 'Microsoft.Sql/servers@2021-11-01' ={ name: sqlServerName location: location properties: { administratorLogin: sqlServerAdminUserName administratorLoginPassword: sqlServerAdminPassword } } // Resource - SQL Database resource sqlServerDatabase 'Microsoft.Sql/servers/databases@2021-11-01' = { parent: sqlServer name: sqlDatabaseName location: location sku: { name: 'Standard' tier: 'Standard' } }
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 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.
Enregistrez les modifications du fichier.
Créer la pile de déploiement et déployer vos ressources sur Azure
Pour déployer ce modèle sur Azure, vous devez vous connecter à votre compte Azure à partir du terminal Visual Studio Code. Veillez à installer les outils Azure CLI.
Dans le menu Terminal, sélectionnez Nouveau terminal. La fenêtre de terminal s’ouvre généralement dans la moitié inférieure de votre écran.
Si l’interpréteur de commandes affiché sur le côté droit de la fenêtre de terminal est bash, il s’agit du bon interpréteur de commandes qui est ouvert et vous pouvez passer à la section suivante.
Si un interpréteur de commandes autre que bash apparaît, sélectionnez la flèche déroulante des interpréteurs de commandes, puis Azure Cloud Shell (Bash).
Dans la liste des interpréteurs de commandes de terminal, sélectionnez bash.
Dans le terminal, accédez au répertoire où vous avez enregistré votre modèle. Par exemple, si vous avez enregistré votre modèle dans le dossier templates, vous pouvez utiliser la commande suivante :
cd templates
Installer Bicep
Exécutez la commande suivante pour vous assurer de disposer de la dernière version de Bicep :
az bicep install && az bicep upgrade
Connexion à Azure avec Azure CLI
Dans le terminal Visual Studio Code, connectez-vous à Azure en exécutant la commande suivante :
az login
Dans le navigateur qui s’ouvre, connectez-vous à votre compte Azure.
Le terminal Visual Studio Code affiche la liste des abonnements associés à ce compte.
Dans la liste, trouvez l’abonnement que vous voulez utiliser pour cet exercice.
Si vous avez manqué la liste lors de la connexion, vous pouvez utiliser l’extrait suivant pour obtenir à nouveau la liste de vos abonnements.
az account list --output table
Définissez l’abonnement par défaut pour toutes les commandes Azure CLI exécutées dans cette session.
az account set --subscription "Your Subscription Name or ID"
Créer un groupe de ressources
Nous devons créer un groupe de ressources pour notre pile de déploiement et nos ressources managées. Pour créer un groupe de ressources, exécutez la commande suivante à partir du terminal dans Visual Studio Code.
az group create \
--name rg-depositsApplication \
--location eastus
Pour déployer ce modèle sur Azure, connectez-vous à votre compte Azure dans le terminal Visual Studio Code. Vérifiez que vous avez installé Azure PowerShell.
Dans le menu Terminal, sélectionnez Nouveau terminal. La fenêtre de terminal s’ouvre généralement dans la moitié inférieure de votre écran.
Si l’interpréteur de commandes affiché sur le côté droit de la fenêtre de terminal est powershell ou pwsh, il s’agit du bon interpréteur de commandes qui est ouvert et vous pouvez passer à la section suivante.
Si un shell autre que powershell ou pwsh apparaît, sélectionnez la flèche déroulante des interpréteurs de commandes, puis PowerShell.
Dans la liste d’interpréteurs de commandes de terminal, sélectionnez powershell ou pwsh.
Dans le terminal, accédez au répertoire où vous avez enregistré votre modèle. Par exemple, si vous avez enregistré votre modèle dans le dossier templates, vous pouvez utiliser la commande suivante :
Set-Location -Path templates
Installer l’interface CLI Bicep
Pour utiliser Bicep à partir d’Azure PowerShell, installez l’interface CLI de Bicep.
Connectez-vous à Azure en utilisant Azure PowerShell
Dans le terminal Visual Studio Code, connectez-vous à Azure en exécutant la commande suivante :
Connect-AzAccount
Dans le navigateur qui s’ouvre, connectez-vous à votre compte Azure.
Récupérez l’ID de l’abonnement que vous voulez utiliser pour cet exercice en exécutant la commande suivante :
Get-AzSubscription
L’ID d’abonnement est la deuxième colonne. Copiez la deuxième colonne. Il doit ressembler à aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.
Définissez l’abonnement par défaut pour toutes les commandes Azure PowerShell exécutées dans cette session.
Set-AzContext -SubscriptionId {Your subscription ID}
Créer un groupe de ressources
Nous devons créer un groupe de ressources pour notre pile de déploiement et nos ressources managées. Pour créer un groupe de ressources, exécutez la commande suivante à partir du terminal dans Visual Studio Code.
New-AzResourceGroup `
-Name rg-depositsApplication `
-Location eastus
Créer la pile de déploiement
Ensuite, nous devons créer notre pile de déploiement étendue à notre groupe de ressources récemment créé. Pour créer la pile de déploiement, exécutez la commande suivante à partir du terminal dans Visual Studio Code.
Pour créer la pile de déploiement, exécutez la commande suivante à partir du terminal dans Visual Studio Code.
az stack group create \ --name stack-deposits \ --resource-group rg-depositsApplication \ --template-file ./main.bicep \ --action-on-unmanage detachAll \ --deny-settings-mode none
Il vous invite à entrer une valeur pour
sqlServerAdminUserName
. Créez un nom pour l’administrateur du serveur SQL, suivi de « Entrée. »Il vous invite à entrer une valeur pour
sqlServerAdminPassword
. Créez un mot de passe complexe pour l’administrateur du serveur SQL, suivi de « Entrée. »Attendez que l’opération de mise à jour se termine avant de passer à la tâche suivante.
Pour créer la pile de déploiement, exécutez la commande suivante à partir du terminal dans Visual Studio Code.
New-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode None
Il vous invite à entrer une valeur pour
sqlServerAdminUserName
. Créez un nom pour l’administrateur du serveur SQL, suivi de « Entrée. »Il vous invite à entrer une valeur pour
sqlServerAdminPassword
. Créez un mot de passe complexe pour l’administrateur du serveur SQL, suivi de « Entrée. »Attendez que l’opération de mise à jour se termine avant de passer à la tâche suivante.
Modifiez le fichier Bicep pour ajouter l’espace de travail Log Analytics existant et une nouvelle instance Application Insights.
Ouvrez le fichier main.bicep dans Visual Studio Code.
Ajoutez le code mis en surbrillance à la section Variables de votre fichier :
// Variables @description('The name of the Application Insights instance.') var applicationInsightsName = 'appinsights-deposits' @description('The name of the app service plan.') var appServicePlanName = 'plan-deposits' @description('The name of the Log Analytics Workspace.') var logAnalyticsWorkspaceName = 'log-deposits'
Ajoutez le code suivant au bas du fichier :
// Resource - Log Analytics Workspace resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = { name: logAnalyticsWorkspaceName location: location properties: { retentionInDays: 30 sku: { name: 'PerGB2018' } } } // Resource - Application Insights resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = { name: applicationInsightsName location: location kind: 'web' properties: { Application_Type: 'web' WorkspaceResourceId: logAnalyticsWorkspace.id } }
Enregistrez les modifications du fichier.
Modifiez le fichier Bicep pour modifier le plan App Service et l’App service.
Ouvrez le fichier main.bicep dans Visual Studio Code.
Changez le nom de la référence SKU du plan App Service de
F1
parS1
:// Resource - App Service Plan resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: 'S1' capacity: 1 } }
Ajoutez le code mis en surbrillance pour connecter l’instance Application Insights :
// Resource - Web App resource webApplication 'Microsoft.Web/sites@2023-12-01' = { name: webApplicationName location: location properties: { serverFarmId: appServicePlan.id siteConfig: { appSettings: [ { name: 'APPINSIGHTS_INSTRUMENTATIONKEY' value: applicationInsights.properties.InstrumentationKey } ] } } }
Enregistrez les modifications du fichier.
Mettre à jour la pile de déploiement
Avec le fichier Bicep modifié, nous souhaitons mettre à jour la pile de déploiement afin que les modifications apportées aux ressources du fichier Bicep soient implémentées.
Pour mettre à jour la pile de déploiement, exécutez la commande suivante à partir du terminal dans Visual Studio Code.
az stack group create \ --name stack-deposits \ --resource-group rg-depositsApplication \ --template-file ./main.bicep \ --action-on-unmanage detachAll \ --deny-settings-mode none
Vous recevez un message qui indique que la pile existe déjà dans l’abonnement actif. Si la valeur de l’action sur un paramètre non géré a changé, l’avertissement vous signale de nouvelles valeurs. Appuyez sur
y
, suivi de « Entrée ».Il vous invite à entrer une valeur pour
sqlServerAdminUserName
. Créez un nom pour l’administrateur du serveur SQL, suivi de « Entrée. »Il vous invite à entrer une valeur pour
sqlServerAdminPassword
. Créez un mot de passe complexe pour l’administrateur du serveur SQL, suivi de « Entrée. »Attendez que l’opération de mise à jour se termine avant de passer à la tâche suivante.
Avec le fichier Bicep modifié, nous souhaitons mettre à jour la pile de déploiement afin que les modifications apportées au plan App Service soient implémentées.
Pour mettre à jour la pile de déploiement, exécutez la commande suivante à partir du terminal dans Visual Studio Code.
Set-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode none
Il vous invite à entrer une valeur pour
sqlServerAdminUserName
. Créez un nom pour l’administrateur du serveur SQL, suivi de « Entrée. »Il vous invite à entrer une valeur pour
sqlServerAdminPassword
. Créez un mot de passe complexe pour l’administrateur du serveur SQL, suivi de « Entrée. »Attendez que l’opération de mise à jour se termine avant de passer à la tâche suivante.
Vérifiez la mise à jour de la pile de déploiement et les ressources managées
Une fois la mise à jour terminée, nous souhaitons vérifier que la référence SKU du plan App Service est mise à jour et que la pile de déploiement gère l’espace de travail Log Analytics existant et la nouvelle instance Application Insights.
Pour afficher la configuration du plan App Service, exécutez la commande suivante à partir du terminal dans Visual Studio Code.
az appservice plan show \ --name plan-deposits --resource-group rg-depositsApplication
Notez la section de la référence SKU de la sortie. Le plan App Service est désormais sur la référence SKU S1. Le résultat devrait être similaire à ce qui suit :
"sku": { "capacity": 1, "family": "S", "name": "S1", "size": "S1", "tier": "Standard" },
Pour afficher la configuration de la pile de déploiement, exécutez la commande suivante à partir du terminal dans Visual Studio Code.
az stack group show \ --resource-group rg-depositsApplication \ --name stack-deposits
Notez la section ressources de la sortie. Nous voyons maintenant l’espace de travail Log Analytics existant et la nouvelle instance Application Insights répertoriée en tant que ressources managées. Le résultat devrait ressembler à la sortie suivante :
"resources": [ { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits", "resourceGroup": "rg-depositsApplication", "status": "managed" } ],
Pour afficher la configuration du plan App Service, exécutez la commande suivante à partir du terminal dans Visual Studio Code.
$plan = Get-AzAppServicePlan ` -ResourceGroupName rg-depositsApplication ` -Name plan-deposits $sku = $plan.Sku $sku
Notez la sortie. Le plan App Service est désormais sur la référence SKU S1. Le résultat doit ressembler à ce qui suit :
Name : S1 Tier : Standard Size : S1 Family : S Capacity : 1
Pour afficher la configuration de la pile de déploiement, exécutez la commande suivante à partir du terminal dans Visual Studio Code.
Get-AzResourceGroupDeploymentStack ` -ResourceGroupName rg-depositsApplication ` -Name stack-deposits
Notez la section ressources de la sortie. Nous voyons maintenant l’espace de travail Log Analytics existant et la nouvelle instance Application Insights répertoriée en tant que ressources managées. Le résultat devrait ressembler à la sortie suivante :
Resources : /subscriptions/./resourceGroups/rg-depositsApplication/././servers/ sql-brpdm7iotbwjm /subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm /subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits /subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits