Partager via


Modes de déploiement Azure Resource Manager

Lorsque vous déployez vos ressources, vous spécifiez que le déploiement est soit une mise à jour incrémentielle, soit une mise à jour complète. La différence entre ces deux modes réside dans la manière dont le Gestionnaire des ressources gère les ressources existantes dans le groupe de ressources qui ne se trouvent pas dans le modèle.

Importante

Utilisez les piles de déploiement pour effectuer des suppressions de ressources lors de l’utilisation de modèles ARM ou de fichiers Bicep, car le mode complet sera progressivement déconseillé.

Pour les deux modes, Resource Manager tente de créer toutes les ressources spécifiées dans le modèle. Si la ressource existe déjà dans le groupe de ressources et que ses paramètres sont inchangés, aucune opération n’est effectuée pour cette ressource. Si vous modifiez les valeurs de propriété d’une ressource, la ressource est mise à jour avec ces nouvelles valeurs. Si vous essayez de mettre à jour l’emplacement ou le type d’une ressource existante, le déploiement échoue avec une erreur. Au lieu de cela, déployez une nouvelle ressource avec l’emplacement ou le type dont vous avez besoin.

Le mode par défaut est incrémentiel.

Mode incrémentiel

En mode incrémentiel, Resource Manager laisse les ressources inchangées qui existent dans le groupe de ressources, mais qui ne sont pas spécifiées dans le modèle. Les ressources du modèle sont ajoutées au groupe de ressources.

Importante

Le mode incrémentiel est le mode de déploiement recommandé. S’il est nécessaire de supprimer des ressources dans le cadre d’un fichier Bicep ou d’un modèle ARM JSON, utilisez des piles de déploiement.

Lors du redéploiement d’une ressource existante en mode incrémentiel, toutes les propriétés sont réappliquées. Les propriétés ne sont pas ajoutées de manière incrémentielle. Un malentendu courant consiste à penser que les propriétés qui ne sont pas spécifiées dans le modèle sont laissées inchangées. Si vous ne spécifiez pas certaines propriétés, Resource Manager interprète le déploiement comme remplaçant ces valeurs. Les propriétés qui ne sont pas incluses dans le modèle sont réinitialisées aux valeurs par défaut. Spécifiez toutes les valeurs non par défaut pour la ressource, pas seulement celles que vous mettez à jour. La définition de ressource dans le modèle contient toujours l’état final de la ressource. Elle ne peut pas représenter une mise à jour partielle d’une ressource existante.

Avertissement

Dans de rares cas, vous pouvez définir des propriétés pour une ressource ou l'une de ses ressources secondaires. Deux exemples courants sont des sous-réseaux sur des réseaux virtuels et des valeurs de configuration de site pour les applications web. Dans ce cas, vous devez gérer attentivement les mises à jour incrémentielles.

Pour les sous-réseaux, spécifiez les valeurs via la subnets propriété sur la ressource Microsoft.Network/virtualNetworks . Ne définissez pas les valeurs via la ressource enfant Microsoft.Network/virtualNetworks/subnets. Tant que les sous-réseaux sont définis sur le réseau virtuel, vous pouvez redéployer le réseau virtuel et ne pas perdre les sous-réseaux.

Pour les valeurs de configuration de site, les valeurs sont implémentées dans le type Microsoft.Web/sites/configde ressource enfant. Si vous redéployez l’application web et spécifiez un objet vide pour les valeurs de configuration du site, la ressource enfant n’est pas mise à jour. Toutefois, si vous fournissez de nouvelles valeurs de configuration de site, le type de ressource enfant est mis à jour.

Mode Complet

Avertissement

Le mode Complet n’est pas recommandé. Si vous souhaitez effectuer des suppressions avec des déploiements de modèles Bicep ou ARM, utilisez des piles de déploiement.

En mode complet, Resource Manager supprime les ressources qui existent dans le groupe de ressources, mais qui ne sont pas spécifiées dans le modèle.

Remarque

Effectuez toujours l’opération de simulation avant de déployer un modèle en mode complet. La simulation vous indique les ressources qui seront créées, supprimées ou modifiées. Effectuez une simulation pour éviter la suppression accidentelle de ressources.

Si votre modèle inclut une ressource qui n’est pas déployée, car la condition prend la valeur false, le résultat dépend de la version de l’API REST que vous utilisez pour déployer le modèle. Si vous utilisez une version antérieure à 2019-05-10, la ressource n’est pas supprimée. Avec 2019-05-10 ou version ultérieure, la ressource est supprimée. Les dernières versions d’Azure PowerShell et d’Azure CLI suppriment la ressource.

Soyez prudent lorsque vous utilisez le mode Complet avec les boucles de copie. Toutes les ressources qui ne sont pas spécifiées dans le modèle après la résolution de la boucle de copie sont supprimées.

Si vous déployez sur plusieurs groupes de ressources dans un modèle, les ressources du groupe de ressources spécifié dans le déploiement peuvent être supprimées. Les ressources dans les groupes de ressources secondaires ne sont pas supprimées.

Il existe des différences dans la façon dont les types de ressources gèrent les suppressions en mode complet. Les ressources parentes sont automatiquement supprimées lorsqu'elles ne sont pas dans un modèle déployé en mode complet. Certaines ressources enfants ne sont pas automatiquement supprimées lorsqu’elles ne se trouvent pas dans le modèle. Toutefois, ces ressources enfants sont supprimées si la ressource parente est supprimée.

Par exemple, si votre groupe de ressources contient une zone DNS (Microsoft.Network/dnsZones type de ressource) et un enregistrement CNAME (Microsoft.Network/dnsZones/CNAME type de ressource), la zone DNS est la ressource parente de l’enregistrement CNAME. Si vous déployez en mode complet et que vous n’incluez pas la zone DNS dans votre modèle, la zone DNS et l’enregistrement CNAME sont tous deux supprimés. Si vous incluez la zone DNS dans votre modèle, mais que vous n’incluez pas l’enregistrement CNAME, le CNAME n’est pas supprimé.

Pour obtenir la liste de la façon dont les types de ressources gèrent la suppression, consultez Suppression des ressources Azure pour les déploiements en mode complet.

Si le groupe de ressources est verrouillé, le mode complet ne supprime pas les ressources.

Remarque

Seuls les modèles de niveau racine prennent en charge le mode de déploiement complet. Pour les modèles liés ou imbriqués, vous devez utiliser le mode incrémentiel.

Les déploiements au niveau de l’abonnement ne prennent pas en charge le mode complet.

Actuellement, le portail ne prend pas en charge le mode complet.

Résultat de l’exemple

Pour illustrer la différence entre les modes incrémentiels et complets, envisagez le scénario suivant.

Le groupe de ressources contient :

  • Ressource A
  • Ressource B
  • Ressource C

Le modèle contient :

  • Ressource A
  • Ressource B
  • Ressource D

Lorsqu’il est déployé en mode incrémentiel , le groupe de ressources a :

  • Ressource A
  • Ressource B
  • Ressource C
  • Ressource D

Une fois déployée en mode complet , la ressource C est supprimée. Le groupe de ressources a :

  • Ressource A
  • Ressource B
  • Ressource D

Définir le mode de déploiement

Pour définir le mode de déploiement lors du déploiement avec PowerShell, utilisez le Mode paramètre.

New-AzResourceGroupDeployment `
  -Mode Complete `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile c:\MyTemplates\storage.json

Pour définir le mode de déploiement lors du déploiement avec Azure CLI, utilisez le mode paramètre.

az deployment group create \
  --mode Complete \
  --name ExampleDeployment \
  --resource-group ExampleResourceGroup \
  --template-file storage.json

L’exemple suivant montre un modèle lié défini sur le mode de déploiement incrémentiel :

"resources": [
  {
    "type": "Microsoft.Resources/deployments",
    "apiVersion": "2025-04-01",
    "name": "linkedTemplate",
    "properties": {
      "mode": "Incremental",
          <nested-template-or-external-template>
    }
  }
]

Étapes suivantes