Azure Resource Manager deployment modes (Implementatiemodi voor 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.

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

Volledige modus

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 implementeert in de volledige modus. Wat-als geeft aan welke resources worden gemaakt, verwijderd of gewijzigd. Gebruik wat-als om onbedoeld te voorkomen dat resources worden verwijderd.

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 nieuwste versies van Azure PowerShell en Azure CLI verwijderen de resource.

Wees voorzichtig met het gebruik van de volledige modus met kopieerlussen. Resources die niet in de sjabloon zijn opgegeven nadat de kopieerlus is omgezet, 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 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 zijn geïmplementeerd in de volledige modus. Sommige onderliggende resources worden niet automatisch verwijderd wanneer ze zich niet in de sjabloon bevindt. 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 opneemt in uw sjabloon, 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 Verwijderen 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.

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

Momenteel biedt de portal geen ondersteuning voor volledige modus.

Incrementele modus

In de incrementele modus laat Resource Manager ongewijzigde resources staan 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 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 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 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 incrementele updates zorgvuldig afhandelen.

Geef voor subnetten de waarden op via de eigenschap op de subnetsResource 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

Sjabloon bevat:

  • Resource A
  • Resource B
  • Resource D

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

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

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

  • Resource A
  • Resource B
  • Resource D

Implementatiemodus instellen

Gebruik de Mode parameter om de implementatiemodus in te stellen bij het implementeren met PowerShell.

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

Gebruik de mode parameter om de implementatiemodus in te stellen bij het implementeren met Azure CLI.

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": "2020-10-01",
    "name": "linkedTemplate",
    "properties": {
      "mode": "Incremental",
          <nested-template-or-external-template>
    }
  }
]

Volgende stappen