Créer une pile de déploiement

Effectué

Une pile de déploiement Azure est une collection de ressources Azure qui peuvent être gérées en tant qu’unité unique, même si elles s’étendent sur plusieurs groupes de ressources ou abonnements.

Vous envisagez le déploiement de la version de test de la nouvelle application de dépôts. Vous devez en savoir plus sur la création d’une pile de déploiement et la vérification de ses ressources managées.

Dans cette unité, vous allez apprendre à créer une pile de déploiement, à vérifier son déploiement et à répertorier toutes les piles de déploiement dans votre environnement.

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.

Piles de déploiement revisitées

Les piles de déploiement changent la façon dont vous réfléchissez à l’organisation des ressources entre les groupes de ressources et les abonnements. Une pile de déploiement vous permet de regrouper toutes les ressources qui composent votre application, quel que soit l’emplacement où elles se trouvent dans votre hiérarchie organisationnelle de ressources Azure. Vous pouvez les gérer en tant qu’unité unique. Avec les piles de déploiement, vous pouvez effectuer des opérations de cycle de vie sur la collection de ressources qui composent la pile.

Graphique représentant une application et sa gestion par une pile de déploiement délimitée par un groupe de ressources.

Considérez les piles de déploiement comme une série de pointeurs qui regroupent les ressources de votre application en une seule unité. Les piles de déploiement peuvent être créées à différentes étendues, telles que les groupes de ressources, les abonnements et les groupes d’administration.

Définir des ressources

Les piles de déploiement prennent en charge l’utilisation de fichiers Bicep, de modèles ARM JSON ou de specs de modèle pour définir des ressources dans une pile. Lorsque vous créez une pile de déploiement à l’aide d’Azure CLI ou d’Azure PowerShell, vous pouvez pointer vers le fichier de modèle spécifique (fichier Bicep ou modèle ARM JSON) ou les spécifications de modèle. Vous n’avez pas besoin de changer la définition de vos ressources.

Nous utilisons le fichier Bicep suivant pour notre première pile de déploiement. Le fichier définit un plan App Service et une application web. Ces ressources deviennent des ressources managées lorsque nous créons la pile de déploiement.

// Parameters
@description('The location for all resources.')
param location string = 'eastus'

@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
  }
}

Remarque

Vous remarquerez peut-être la syntaxe ${uniqueString(resourceGroup().id)} sur le paramètre webApplicationName. La fonction uniqueString crée une chaîne basée sur l’ID du groupe de ressources et l’ajoute en tant que suffixe à webapp-deposits. De nombreux services Azure nécessitent des noms uniques. Cette fonction permet de générer un nom unique.

Création d’une pile de déploiement

La création et le déploiement d’une pile de déploiement et de ses ressources sont presque identiques à un déploiement Azure standard. Que vous utilisiez Azure CLI, Azure PowerShell ou une infrastructure en tant que pipeline de code, le processus se sent le même. Par exemple :

La commande Azure CLI pour déployer un fichier Bicep dans un groupe de ressources est la suivante :

az deployment group create \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep

La commande Azure CLI pour créer une pile de déploiement dans l’étendue du groupe de ressources est la suivante :

az stack group create \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep \
    --action-on-unmanage detachAll \
    --deny-settings-mode none

Notez que les seules modifications apportées à la commande sont les mots deployment et stack, ainsi que les différences dans les paramètres utilisés. Il en va de même pour les déploiements sur des abonnements et des groupes d’administration.

Remarque

Dans les modules ultérieurs, nous explorons comment gérer les ressources d’une pile de déploiement à l’aide de --action-on-unmanage et comment empêcher les modifications indésirables à l’aide de --deny-settings-mode.

La commande Azure PowerShell pour déployer un fichier Bicep dans un groupe de ressources est la suivante :

New-AzResourceGroupDeployment `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep

La commande Azure PowerShell pour créer une pile de déploiement dans l’étendue du groupe de ressources est la suivante :

New-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep `
    -ActionOnUnmanage DetachAll `
    -DenySettingsMode None

Notez que la seule modification de la commande est le mot stack et les différences dans les paramètres utilisés. Il en va de même pour les déploiements sur des abonnements et des groupes d’administration.

Remarque

Dans les modules ultérieurs, nous explorons comment gérer les ressources d’une pile de déploiement à l’aide de -ActionOnUnmanage et comment empêcher les modifications indésirables à l’aide de -DenySettingsMode.

À présent, examinons la création d’une pile de déploiement dans l’étendue du groupe de ressources.

Pour créer une pile de déploiement à l’aide d’Azure CLI, utilisez la commande az stack group create. Les commandes suivantes créent d’abord un groupe de ressources appelé rg-depositsApplication puis créent la pile de déploiement dans l’étendue du groupe de ressources.

az group create \
    --name rg-depositsApplication \
    --location eastus
az stack group create \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep \
    --action-on-unmanage detachAll \
    --deny-settings-mode none

Pour créer une pile de déploiement à l’aide d’Azure PowerShell, utilisez la commande New-AzResourceGroupDeploymentStack. Les commandes suivantes créent d’abord un groupe de ressources appelé rg-depositsApplication puis créent la pile de déploiement dans l’étendue du groupe de ressources.

New-AzResourceGroup `
    -Name rg-depositsApplication `
    -Location eastus
New-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep `
    -ActionOnUnmanage DetachAll `
    -DenySettingsMode None

Affichage des piles de déploiement

Les groupes de ressources peuvent avoir plusieurs piles de déploiement délimitées à celles-ci. Vous pouvez afficher des détails sur une pile de déploiement spécifique délimitée à un groupe de ressources.

Pour afficher une ressource de pile de déploiement spécifique étendue à un groupe de ressources à l’aide d’Azure CLI, utilisez la commande az stack group show, en spécifiant le nom de la pile de déploiement et le groupe de ressources cible.

az stack group show \
    --resource-group rg-depositsApplication \
    --name stack-deposits

Les résultats incluent les propriétés de la pile de déploiement et l’état des ressources gérées. La sortie doit apparaître familière à la section suivante :

{
  "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,
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "rg-depositsApplication",
  "resources": [
    {
      "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"
}

Notez la section ressources de la sortie. Pour chaque ressource, elle affiche son état en tant que managed, son groupe de ressources, son ID de ressource et ses paramètres de refus.

Pour afficher une ressource de pile de déploiement spécifique étendue à un groupe de ressources à l’aide d’Azure PowerShell, utilisez la commande Get-AzResourceGroupDeploymentStack, en spécifiant le nom de la pile de déploiement et le groupe de ressources cible.

Get-AzResourceGroupDeploymentStack `
    -ResourceGroupName rg-depositsApplication `
    -Name stack-deposits

Les résultats incluent les propriétés de la pile de déploiement et l’état des ressources gérées. La sortie doit apparaître familière à la section suivante :

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

Notez la section ressources de la sortie. Il définit les ressources gérées par la pile de déploiement. Vous voyez l’ID de ressource complet de chaque ressource.

Vous pouvez également afficher les piles de déploiement dans le portail Azure. Ils sont disponibles dans leurs étendues respectives. Pour un groupe de ressources, accédez au groupe de ressources où la pile de déploiement est délimitée. Sous paramètres, vous voyez une option pour les piles de déploiement.

Capture d’écran du portail Azure montrant les paramètres d’un groupe de ressources et où rechercher des piles de déploiement.

Lorsque vous cliquez sur les piles de déploiement, elle répertorie toutes les piles délimitées au groupe de ressources. En cliquant sur une pile de déploiement, vous accédez à la page de propriétés des piles de déploiement.

Capture d’écran du portail Azure montrant les propriétés d’une pile de déploiement, y compris ses ressources managées.

Liste des piles de déploiement

Vous pouvez également répertorier toutes les piles de déploiement délimitées à un groupe de ressources spécifique.

Pour répertorier toutes les ressources de pile de déploiement limitées à un groupe de ressources à l’aide d’Azure CLI, utilisez la commande az stack group list, en spécifiant le groupe de ressources cible.

az stack group list \
    --resource-group rg-depositsApplication

Pour répertorier toutes les ressources de pile de déploiement limitées à un groupe de ressources à l’aide d’Azure PowerShell, utilisez la commande Get-AzResourceGroupDeploymentStack, en spécifiant le groupe de ressources cible.

Get-AzResourceGroupDeploymentStack `
    -ResourceGroupName rg-depositsApplication

Remarque

Azure PowerShell utilise la même commande, Get-AzResourceGroupDeploymentStack pour les opérations d’affichage et de liste.