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 hoe Resource Manager resources in de resourcegroep verwerkt die zich niet in de sjabloon.

Voor beide modi probeert Resource Manager alle resources te maken die zijn opgegeven in de sjabloon. 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 Voltooien

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

Notitie

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

Als uw sjabloon een resource bevat die niet is geïmplementeerd omdat de voorwaarde onwaar is, is het resultaat afhankelijk van de REST API die u gebruikt om de sjabloon te implementeren. Als u een eerdere versie dan 2019-05-10 gebruikt, 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. Alle resources die niet zijn opgegeven in de sjabloon na het oplossen van de kopieerlus, worden verwijderd.

Als u implementeert naar meer dan één resourcegroep ineen sjabloon , komen resources in de resourcegroep die is opgegeven in de implementatiebewerking in aanmerking voor verwijderen. Resources in de secundaire resourcegroepen worden niet verwijderd.

Er zijn enkele verschillen in de manier waarop resourcetypen het verwijderen van de volledige modus 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 staan. Deze onderliggende resources worden echter verwijderd als de bovenliggende resource wordt verwijderd.

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

Zie Verwijdering van Azure-resourcesvoor implementaties in volledige modus voor een lijst met hoe 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 sjablonenmoet u de incrementele modus gebruiken.

Implementaties op abonnementsniveau bieden geen ondersteuning voor de volledige modus.

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

Incrementele modus

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

Notitie

Wanneer u een bestaande resource opnieuw in incrementele modusplot, worden alle eigenschappen opnieuw toegepast. De eigenschappen worden niet incrementeel toegevoegd. Een veelvoorkomende verwarring is om te denken dat eigenschappen die niet zijn opgegeven in de sjabloon ongewijzigd blijven. Als u bepaalde eigenschappen niet opgeeft, Resource Manager de implementatie geïnterpreteerd 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 bij wilt werken. De resourcedefinitie in de sjabloon bevat altijd de eindtoestand van de resource. Het kan geen gedeeltelijke update voor een bestaande resource vertegenwoordigen.

In zeldzame gevallen worden eigenschappen die u voor een resource opgeeft, daadwerkelijk geïmplementeerd als een onderliggende resource. Wanneer u bijvoorbeeld siteconfiguratiewaarden voor een web-app op geeft, worden deze waarden geïmplementeerd in het onderliggende resourcetype Microsoft.Web/sites/config . Als u de web-app opnieuwplot en een leeg object opgeeft voor de siteconfiguratiewaarden, wordt de onderliggende resource niet bijgewerkt. Als u echter nieuwe siteconfiguratiewaarden op geeft, wordt het onderliggende resourcetype bijgewerkt.

Voorbeeldresultaat

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

De resourcegroep bevat:

  • Resource A
  • Resource B
  • Resource C

De sjabloon bevat:

  • Resource A
  • Resource B
  • Resource D

Wanneer de resourcegroep is geïmplementeerd in de incrementele modus, heeft deze 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 wanneer u implementeert met PowerShell, gebruikt u de Mode parameter .

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

Gebruik de parameter om de implementatiemodus in te stellen bij het implementeren met Azure mode 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