Mise à jour et suppression d’une pile de déploiement
Les piles de déploiement vous permettent de gérer vos ressources Azure à l’aide de processus et de modèles standard. Au fur et à mesure que votre application évolue, les ressources qui la composent changent également. L’ajout et la suppression de ressources managées constituent une partie essentielle de la gestion de cycle de vie.
Vous avez terminé sprint 1 et le déploiement initial de l’application de dépôts à l’aide de piles de déploiement. À présent, vous devez préparer sprint 2 pour introduire de nouveaux services à l’application. Vous souhaitez en savoir plus sur la mise à jour et la suppression des piles de déploiement et des ressources managées.
Dans cette leçon, vous allez apprendre à mettre à jour une pile de déploiement en ajoutant des ressources à votre fichier Bicep. En outre, vous allez apprendre à supprimer une pile de déploiement et ses ressources managées.
Remarque
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.
Mise à jour d’une pile de déploiement
L’évolution d’une application s’accompagne de celle de ses ressources. Comment mettre à jour une pile de déploiement et ses ressources managées lorsque de nouveaux services et fonctionnalités sont ajoutés ? Quelles situations nécessitent la mise à jour d'une pile de déploiement ? L’ajout d’une nouvelle ressource ou la modification de la propriété d’une ressource managée existante nécessite que nous mettions à jour la pile de déploiement.
La mise à jour d’une pile requiert la mise à jour des ressources définies dans notre modèle ARM JSON, le fichier Bicep ou la spécification de modèle. Une fois la modification apportée au fichier de modèle, nous mettons à jour la pile de déploiement à l’aide de la commande appropriée.
Supposons que notre application de dépôt doive ajouter une nouvelle base de données Azure SQL et que nous souhaitions que la pile de déploiement gère la base de données. Pour ajouter la nouvelle base de données, nous mettons à jour notre fichier Bicep pour définir un nouveau serveur Azure SQL et une nouvelle base de données.
// 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'
}
}
Le code mis en surbrillance définit notre nouvelle base de données Azure SQL pour notre application de dépôts. Une fois notre nouvelle ressource définie, nous devons mettre à jour la pile de déploiement.
Pour mettre à jour une pile de déploiement à l’aide d’Azure CLI, utilisez la commande az stack group create
.
az stack group create \
--name stack-deposits \
--resource-group rg-depositsApplication \
--template-file ./main.bicep \
--action-on-unmanage detachAll \
--deny-settings-mode none
Remarque
Azure CLI ne dispose pas d’une commande spécifique pour mettre à jour une pile de déploiement. Utilisez la commande create pour mettre à jour la pile.
Lorsque vous effectuez une mise à jour de la pile, 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 managé change, l’avertissement vous signale de nouvelles valeurs.
Pour s’assurer que la pile gère les nouvelles ressources, utilisez la commande az stack group show
.
az stack group show \
--resource-group rg-depositsApplication
--name stack-deposits
{
"actionOnUnmanage": {
"managementGroups": "detach",
"resourceGroups": "detach",
"resources": "detach"
},
"bypassStackOutOfSyncError": null,
"correlationId": ".",
"debugSetting": null,
"deletedResources": [],
"denySettings": {
"applyToChildScopes": false,
"excludedActions": null,
"excludedPrincipals": null,
"mode": "none"
},
"deploymentId": "/subscriptions/././rg-depositsApplication/./Microsoft.Resources/deployments/stack-deposits",
"deploymentScope": null,
"description": null,
"detachedResources": [],
"duration": "PT2M53.2734284S",
"error": null,
"failedResources": [],
"id": "/subscriptions/././rg-depositsApplication/./Microsoft.Resources/deploymentStacks/stack-deposits",
"location": null,
"name": "stack-deposits",
"outputs": null,
"parameters": {
"sqlServerAdminPassword": {
"reference": null,
"type": "securestring",
"value": ""
},
"sqlServerAdminUserName": {
"reference": null,
"type": "string",
"value": "sqladmin"
}
},
"parametersLink": null,
"provisioningState": "succeeded",
"resourceGroup": "rg-depositsApplication",
"resources": [
{
"denyStatus": "none",
"id": "/subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq",
"resourceGroup": "rg-depositsApplication",
"status": "managed"
},
{
"denyStatus": "none",
"id": "/subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq/databases/sqldb-eque2jlrboltq",
"resourceGroup": "rg-depositsApplication",
"status": "managed"
},
{
"denyStatus": "none",
"id": "/subscriptions/././rg-depositsApplication/././serverfarms/plan-deposits",
"resourceGroup": "rg-depositsApplication",
"status": "managed"
},
{
"denyStatus": "none",
"id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-eque2jlrboltq",
"resourceGroup": "rg-depositsApplication",
"status": "managed"
}
],
"systemData": {
"createdAt": "2024-01-01T00:00:01.000000+00:00",
"createdBy": "depositsapplication@contoso.com",
"createdByType": "User",
"lastModifiedAt": "2024-01-01T00:00:01.000000+00:00",
"lastModifiedBy": "depositsapplication@contoso.com",
"lastModifiedByType": "User"
},
"tags": {},
"template": null,
"templateLink": null,
"type": "Microsoft.Resources/deploymentStacks"
}
Le code mis en surbrillance montre le nouveau serveur Azure SQL et la base de données Azure SQL managés par la pile de déploiement.
Pour mettre à jour une pile de déploiement à l’aide d’Azure PowerShell, utilisez la commande Set-AzResourceGroupDeploymentStack
.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
Pour vérifier que la pile gère les nouvelles ressources, utilisez la commande Get-AzResourceGroupDeploymentStack
.
Get-AzResourceGroupDeploymentStack `
-ResourceGroupName rg-depositsApplication `
-Name stack-deposits
Id : /subscriptions/././rg-depositsApplication/././deploymentStacks/stack-deposits
Name : stack-deposits
ProvisioningState : succeeded
resourcesCleanupAction : detach
resourceGroupsCleanupAction : detach
managementGroupsCleanupAction : detach
CorrelationId : .
DenySettingsMode : none
CreationTime(UTC) : 1/01/2024 0:00:01 AM
DeploymentId : /subscriptions/././rg-depositsApplication/././deployments/stack-deposits
Resources : /subscriptions/././rg-depositsApplication/././serverfarms/plan-deposits
/subscriptions/././rg-depositsApplication/././sites/webapp-eque2jlrboltq
/subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq
/subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq/databases/sqldb-eque2jlrboltq
Parameters :
Name Type Value
======================== ========================= ==========
sqlServerAdminUserName string "sqladmin"
sqlServerAdminPassword securestring ""
Le code mis en surbrillance montre le nouveau serveur Azure SQL et la base de données Azure SQL managés par la pile de déploiement.
Dans le module suivant, vous travaillez sur la gestion des cycles de vie des ressources, notamment l’ajout, la mise à jour, le détachement et la suppression de ressources managées.
Suppression d’une pile de déploiement
La fiabilité du nettoyage des ressources est une caractéristique essentielle des piles de déploiement. Lorsque vous supprimez une pile de déploiement, vous pouvez également supprimer les ressources managées, les groupes de ressources et les groupes d’administration. Si vous utilisez un seul appel d’API, vous n’aurez plus besoin de comprendre les dépendances. Comme pour la création et la mise à jour de piles de déploiement, l’action sur un paramètre non géré détermine comment Azure gère les ressources détachées.
Remarque
Dans ce module, nous travaillons avec des piles de déploiement étendues à l’échelle d’un groupe de ressources. Dans ce cas, le groupe de ressources n’est pas managé par la pile. La valeur « supprimer tout » pour l’action sur le paramètre non géré ne supprime pas le groupe de ressources où se trouve la pile. Il faut supprimer le groupe de ressources après la suppression de la pile et de ses ressources.
Pour supprimer une pile de déploiement à l’aide d’Azure CLI, utilisez la commande az stack group delete
. L’argument --action-on-unmanaged
détermine comment Azure gère les ressources détachées, les groupes de ressources et les groupes d’administration.
az stack group delete \
--name stack-deposits \
--resource-group rg-depositsApplication \
--action-on-unmanage deleteAll
Pour supprimer une pile de déploiement à l’aide d’Azure PowerShell, utilisez la commande Remove-AzResourceGroupDeploymentStack
. L’argument -ActionOnUnmanage
détermine comment Azure gère les ressources détachées, les groupes de ressources et les groupes d’administration.
Remove-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-ActionOnUnmanage -DeleteAll