Delen via


Implementatiemodi van Azure Resource Manager

Bij het implementeren van uw resources geeft u op dat de implementatie een incrementele update of een volledige update is. Het verschil tussen deze twee modi is de manier waarop Resource Manager bestaande resources verwerkt in de resourcegroep die zich niet in de sjabloon bevindt.

Belangrijk

Gebruik implementatiestacks om resourceverwijderingen uit te voeren bij het gebruik van ARM-sjablonen of Bicep-bestanden, omdat de volledige modus geleidelijk wordt afgeschaft.

Voor beide modi probeert Resource Manager alle resources te maken die zijn opgegeven in de sjabloon. Als de resource al bestaat in de resourcegroep en de bijbehorende instellingen ongewijzigd zijn, wordt er geen bewerking voor die resource uitgevoerd. Als u de eigenschapswaarden voor een resource wijzigt, wordt de resource bijgewerkt met deze nieuwe waarden. Als u de locatie of het type van een bestaande resource probeert bij te werken, mislukt de implementatie met een fout. Implementeer in plaats daarvan een nieuwe resource met de locatie of het type dat u nodig hebt.

De standaardmodus is incrementeel.

Incrementele modus

In de incrementele modus laat Resource Manager de resources die aanwezig zijn in de resourcegroep maar niet in de sjabloon worden opgegeven, ongewijzigd. Bronnen in de sjabloon worden toegevoegd aan de resourcegroep.

Belangrijk

Incrementele modus is de aanbevolen implementatiemodus. Als er resources moeten worden verwijderd als onderdeel van een Bicep-bestand of ARM JSON-sjabloon, gebruikt u implementatiestacks.

Bij het opnieuw implementeren van een bestaande resource in de incrementele modus worden alle eigenschappen opnieuw toegepast. De eigenschappen worden niet incrementeel toegevoegd. Een veelvoorkomend misverstand is om te denken dat eigenschappen die niet in de sjabloon zijn opgegeven, ongewijzigd blijven. Als u bepaalde eigenschappen niet opgeeft, interpreteert Resource Manager de implementatie als het overschrijven van deze waarden. Eigenschappen die niet in de sjabloon zijn opgenomen, worden opnieuw ingesteld op de standaardwaarden. Geef alle niet-standaardwaarden voor de resource op, niet alleen de waarden die u bijwerkt. De resourcedefinitie in de sjabloon bevat altijd de uiteindelijke status van de resource. Het kan geen gedeeltelijke update voor een bestaande resource vertegenwoordigen.

Waarschuwing

In zeldzame gevallen kunt u eigenschappen opgeven voor een resource of voor een van de onderliggende resources. Twee veelvoorkomende voorbeelden zijn subnetten in virtuele netwerken en siteconfiguratiewaarden voor web-apps. In deze gevallen moet u incrementele updates zorgvuldig afhandelen.

Geef voor subnetten de waarden op via de subnets eigenschap op de Resource Microsoft.Network/virtualNetworks . Definieer de waarden niet via de onderliggende resource Microsoft.Network/virtualNetworks/subnet. Zolang de subnetten zijn gedefinieerd in het virtuele netwerk, kunt u het virtuele netwerk opnieuw implementeren en de subnetten niet verliezen.

Voor site-configuratiewaarden worden de waarden geïmplementeerd in het kind-resourcetype Microsoft.Web/sites/config. Als u de web-app opnieuw implementeert en een leeg object opgeeft voor de siteconfiguratiewaarden, wordt de onderliggende resource niet bijgewerkt. Als u echter nieuwe site-configuratiewaarden opgeeft, wordt het child-resourcetype bijgewerkt.

Volledige modus

Waarschuwing

De volledige modus wordt niet aanbevolen. Als u verwijderingen wilt uitvoeren met Bicep- of ARM-sjabloonimplementaties, gebruikt u Implementatiestacks.

In de volledige modus verwijdert Resource Manager resources die aanwezig zijn in de resourcegroep, maar die niet zijn opgegeven in de sjabloon.

Opmerking

Gebruik altijd de wat-als-bewerking voordat u een sjabloon in de volledige modus implementeert. Wat-als laat zien welke resources worden gemaakt, verwijderd of gewijzigd. Gebruik wat-als om het onbedoeld verwijderen van middelen te voorkomen.

Als uw sjabloon een resource bevat die niet is geïmplementeerd omdat de voorwaarde onwaar oplevert, is het resultaat afhankelijk van de REST API-versie die u gebruikt om de sjabloon te implementeren. Als u een versie gebruikt die ouder is dan 2019-05-10, wordt de resource niet verwijderd. Met 2019-05-10 of hoger wordt de resource verwijderd. De resource wordt verwijderd uit de nieuwste versies van Azure PowerShell en Azure CLI.

Wees voorzichtig met het gebruik van de volledige modus met kopieerlussen. Alle bronnen die niet zijn opgegeven in de sjabloon nadat de kopieerlus is opgelost, worden verwijderd.

Als u implementeert in meer dan één resourcegroep in een sjabloon, komen resources in de resourcegroep die is opgegeven in de implementatiebewerking in aanmerking om te worden verwijderd. Resources in de secundaire resourcegroep worden niet verwijderd.

Er zijn enkele verschillen in de manier waarop resourcetypen volledige modusverwijderingen verwerken. Hoofdbronnen worden automatisch verwijderd wanneer ze niet in een sjabloon staan dat is geïmplementeerd in de complete modus. Sommige kinderresources worden niet automatisch verwijderd wanneer ze niet in de sjabloon staan. Deze onderliggende resources worden echter verwijderd als de bovenliggende resource wordt verwijderd.

Als uw resourcegroep bijvoorbeeld een DNS-zone (Microsoft.Network/dnsZones resourcetype) en een CNAME-record (Microsoft.Network/dnsZones/CNAME resourcetype) bevat, is de DNS-zone de bovenliggende resource voor de CNAME-record. Als u implementeert met de volledige modus en de DNS-zone niet in uw sjabloon opneemt, worden de DNS-zone en de CNAME-record beide verwijderd. Als u de DNS-zone in uw sjabloon opneemt, maar de CNAME-record niet opneemt, wordt de CNAME niet verwijderd.

Zie Verwijdering van Azure-resources voor volledige modusimplementaties voor een lijst met de manier waarop resourcetypen het verwijderen verwerken.

Als de resourcegroep is vergrendeld, worden de resources niet verwijderd in de volledige modus.

Opmerking

Alleen sjablonen op hoofdniveau ondersteunen de volledige implementatiemodus. Voor gekoppelde of geneste sjablonen moet u de incrementele modus gebruiken.

Implementaties op abonnementsniveau bieden geen ondersteuning voor de volledige modus.

Momenteel biedt de portal geen ondersteuning voor de volledige modus.

Voorbeeldresultaat

Bekijk het volgende scenario om het verschil tussen incrementele en volledige modi te illustreren.

Resourcegroep bevat:

  • Bron A
  • Bron B
  • Bron C

Sjabloon bevat:

  • Bron A
  • Bron B
  • Hulpbron D

Wanneer deze wordt geïmplementeerd in de incrementele modus, heeft de resourcegroep het volgende:

  • Bron A
  • Bron B
  • Bron C
  • Hulpbron D

Wanneer deze is geïmplementeerd in de volledige modus, wordt Resource C verwijderd. De groep hulpbronnen heeft:

  • Bron A
  • Bron B
  • Hulpbron D

Implementatiemodus instellen

Als u de implementatiemodus wilt instellen bij het implementeren met PowerShell, gebruikt u de Mode parameter.

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

Als u de implementatiemodus wilt instellen bij het implementeren met Azure CLI, gebruikt u de mode parameter.

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

In het volgende voorbeeld ziet u een gekoppelde sjabloon die is ingesteld op de incrementele implementatiemodus:

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

Volgende stappen