Delen via


Azure Resource Manager deployment modes (Implementatiemodi voor Azure Resource Manager)

Wanneer u uw resources implementeert, geeft u op dat de implementatie een incrementele update of een volledige update is. Het verschil tussen deze twee modi is hoe Resource Manager omgaat met bestaande resources in de resourcegroep die zich niet in de sjabloon bevinden.

Voor beide modi probeert Resource Manager alle resources te maken die in de sjabloon zijn opgegeven. Als de resource al in de resourcegroep bestaat en de instellingen ongewijzigd zijn, wordt er geen bewerking uitgevoerd voor die resource. 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.

Modus Volledig

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

Notitie

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 onbedoeld verwijderen van resources te voorkomen.

Als uw sjabloon een resource bevat die niet is geïmplementeerd omdat voorwaarde resulteert in onwaar, 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 meest recente versies van Azure PowerShell en Azure CLI verwijderen de resource.

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

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

Er zijn enkele verschillen in de manier waarop resourcetypen volledige modusverwijderingen verwerken. Bovenliggende resources worden automatisch verwijderd wanneer ze niet in een sjabloon staan die in de volledige modus is geïmplementeerd. Sommige onderliggende resources worden niet automatisch verwijderd wanneer ze niet in de sjabloon zijn opgenomen. 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 verwijdering verwerken.

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

Notitie

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 modus Volledig.

Op dit moment biedt de portal geen ondersteuning voor de volledige modus.

Incrementele modus

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

Belangrijk

Wanneer u een bestaande resource opnieuw implementeert in de incrementele modus, worden alle eigenschappen opnieuw toegepast. De eigenschappen worden niet incrementeel toegevoegd. Een veelvoorkomend misverstand is dat eigenschappen die niet zijn opgegeven in de sjabloon, ongewijzigd blijven. Als u bepaalde eigenschappen niet opgeeft, interpreteert Resource Manager de implementatie als het overschrijven van deze waarden. Eigenschappen die niet zijn opgenomen in de sjabloon, worden opnieuw ingesteld op de standaardwaarden. Geef alle niet-standaardwaarden op voor de resource, 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 van 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 zorgvuldig omgaan met incrementele updates.

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

Voor siteconfiguratiewaarden worden de waarden geïmplementeerd in het onderliggende 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 siteconfiguratiewaarden opgeeft, wordt het onderliggende resourcetype bijgewerkt.

Voorbeeldresultaat

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

Resourcegroep bevat:

  • Resource A
  • Resource B
  • Resource C

De sjabloon bevat:

  • Resource A
  • Resource B
  • Resource D

Bij implementatie in de incrementele modus heeft de resourcegroep het volgende:

  • Resource A
  • Resource B
  • Resource C
  • Resource D

Wanneer resource C in de volledige modus is geïmplementeerd, wordt deze verwijderd. De resourcegroep heeft:

  • Resource A
  • Resource B
  • Resource 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 incrementele implementatiemodus:

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

Volgende stappen