Démarrage rapide : Créer et déployer une pile de déploiement avec Bicep

Ce guide de démarrage rapide explique comment créer une pile de déploiement.

Prérequis

Créer un fichier Bicep

Créez un fichier Bicep pour créer un compte de stockage et un réseau virtuel.

param resourceGroupLocation string = resourceGroup().location
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'
param vnetName string = 'vnet${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: resourceGroupLocation
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2022-11-01' = {
  name: vnetName
  location: resourceGroupLocation
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    subnets: [
      {
        name: 'Subnet-1'
        properties: {
          addressPrefix: '10.0.0.0/24'
        }
      }
      {
        name: 'Subnet-2'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }
}

Enregistrez le fichier Bicep sous main.bicep.

Créer une pile de déploiement

Dans ce guide de démarrage rapide, vous créez la pile de déploiement dans l’étendue du groupe de ressources. Vous pouvez également créer la pile de déploiement au niveau de l’étendue de l’abonnement ou du groupe d’administration. Pour plus d’informations, consultez la section Créer des piles de déploiement.

az group create \
  --name 'demoRg' \
  --location 'centralus'

az stack group create \
  --name demoStack \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --deny-settings-mode 'none'

Vérifier le déploiement

Pour répertorier les piles de déploiement déployées au niveau du groupe de ressources :

az stack group show \
  --resource-group 'demoRg' \
  --name 'demoStack'

La sortie montre deux ressources managées, à savoir un compte de stockage et un réseau virtuel :

{
  "actionOnUnmanage": {
    "managementGroups": "detach",
    "resourceGroups": "detach",
    "resources": "detach"
  },
  "debugSetting": null,
  "deletedResources": [],
  "denySettings": {
    "applyToChildScopes": false,
    "excludedActions": null,
    "excludedPrincipals": null,
    "mode": "none"
  },
  "deploymentId": "/subscriptions/00000000-0000-0000-0000-000000000000/demoRg/providers/Microsoft.Resources/deployments/demoStack-2023-06-08-14-58-28-fd6bb",
  "deploymentScope": null,
  "description": null,
  "detachedResources": [],
  "duration": "PT30.1685405S",
  "error": null,
  "failedResources": [],
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/demoRg/providers/Microsoft.Resources/deploymentStacks/demoStack",
  "location": null,
  "name": "demoStack",
  "outputs": null,
  "parameters": {},
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "demoRg",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/demoRg/providers/Microsoft.Network/virtualNetworks/vnetthmimleef5fwk",
      "resourceGroup": "demoRg",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/demoRg/providers/Microsoft.Storage/storageAccounts/storethmimleef5fwk",
      "resourceGroup": "demoRg",
      "status": "managed"
    }
  ],
  "systemData": {
    "createdAt": "2023-06-08T14:58:28.377564+00:00",
    "createdBy": "johndole@contoso.com",
    "createdByType": "User",
    "lastModifiedAt": "2023-06-08T14:58:28.377564+00:00",
    "lastModifiedBy": "johndole@contoso.com",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "template": null,
  "templateLink": null,
  "type": "Microsoft.Resources/deploymentStacks"
}

Vous pouvez également vérifier le déploiement en répertoriant les ressources managées dans la pile de déploiement :

az stack group show \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --output 'json'

Le résultat ressemble à ce qui suit :

{
  "actionOnUnmanage": {
    "managementGroups": "detach",
    "resourceGroups": "detach",
    "resources": "detach"
  },
  "debugSetting": null,
  "deletedResources": [],
  "denySettings": {
    "applyToChildScopes": false,
    "excludedActions": null,
    "excludedPrincipals": null,
    "mode": "none"
  },
  "deploymentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Resources/deployments/demoStack-2023-06-05-20-55-48-38d09",
  "deploymentScope": null,
  "description": null,
  "detachedResources": [],
  "duration": "PT29.006353S",
  "error": null,
  "failedResources": [],
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Resources/deploymentStacks/demoStack",
  "location": null,
  "name": "demoStack",
  "outputs": null,
  "parameters": {},
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "demoRg",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Network/virtualNetworks/vnetzu6pnx54hqubm",
      "resourceGroup": "demoRg",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Storage/storageAccounts/storezu6pnx54hqubm",
      "resourceGroup": "demoRg",
      "status": "managed"
    }
  ],
  "systemData": {
    "createdAt": "2023-06-05T20:55:48.006789+00:00",
    "createdBy": "johndole@contoso.com",
    "createdByType": "User",
    "lastModifiedAt": "2023-06-05T20:55:48.006789+00:00",
    "lastModifiedBy": "johndole@contoso.com",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "template": null,
  "templateLink": null,
  "type": "Microsoft.Resources/deploymentStacks"
}

Une fois qu’une pile est créée, vous pouvez accéder à la pile elle-même et aux ressources managées associées et les afficher par le biais du portail Azure. Accédez au groupe de ressources où la pile a été déployée pour pouvoir accéder à l’ensemble des informations et paramètres appropriés.

Capture d’écran d’une pile de déploiement dans le portail Azure.

Mettre à jour la pile de déploiement

Pour mettre à jour une pile de déploiement, vous pouvez modifier le fichier Bicep sous-jacent et réexécuter la commande de création d’une pile de déploiement.

Modifiez le fichier main.bicep pour remplacer le nom de la référence SKU Standard_LRS par Standard_GRS :

Exécutez la commande suivante :

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --deny-settings-mode 'none'

À partir du portail Azure, vérifiez les propriétés du compte de stockage pour confirmer la modification.

À l’aide de la même méthode, vous pouvez ajouter une ressource à la pile de déploiement ou supprimer une ressource managée de la pile de déploiement. Pour plus d’informations, consultez les sections Ajouter des ressources à une pile de déploiement et Supprimer des ressources managées d’une pile de déploiement.

Supprimer la pile de déploiement

Pour supprimer la pile de déploiement et les ressources managées :

az stack group delete \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --delete-all

Si vous exécutez les commandes de suppression sans les paramètres de suppression de tous les éléments, les ressources managées sont détachées, mais pas supprimées. Par exemple :

az stack group delete \
  --name 'demoStack' \
  --resource-group 'demoRg'

Les paramètres suivants peuvent être utilisés pour basculer entre le détachement et la suppression.

  • --delete-all : supprime les ressources et les groupes de ressources.
  • --delete-resources : supprime les ressources uniquement.
  • --delete-resource-groups : supprime les groupes de ressources uniquement. Il n’est pas valide d’utiliser delete-resource-groups seul. delete-resource-groups doit être utilisé avec delete-resources.

Pour plus d’informations, consultez la section Supprimer des piles de déploiement.

La commande de suppression supprime exclusivement les ressources managées et les groupes de ressources managées. Vous restez responsable de la suppression des groupes de ressources qui ne sont pas managés par la pile de déploiement.

Nettoyer les ressources

Supprimez le groupe de ressources non managées.

az group delete --name 'demoRg'

Étapes suivantes