Distributionslägen för Azure Resource Manager
När du distribuerar dina resurser anger du att distributionen antingen är en inkrementell uppdatering eller en fullständig uppdatering. Skillnaden mellan dessa två lägen är hur Resource Manager hanterar befintliga resurser i resursgruppen som inte finns i mallen.
För båda lägena Resource Manager att skapa alla resurser som anges i mallen. Om resursen redan finns i resursgruppen och dess inställningar är oförändrade utförs ingen åtgärd för den resursen. Om du ändrar egenskapsvärdena för en resurs uppdateras resursen med de nya värdena. Om du försöker uppdatera platsen eller typen för en befintlig resurs misslyckas distributionen med ett fel. Distribuera i stället en ny resurs med den plats eller typ som du behöver.
Standardläget är inkrementellt.
Slutför läge
I fullständigt läge Resource Manager bort resurser som finns i resursgruppen men som inte har angetts i mallen.
Anteckning
Använd alltid vad om-åtgärden innan du distribuerar en mall i fullständigt läge. Vad händer om visar vilka resurser som ska skapas, tas bort eller ändras. Använd vad om för att undvika att oavsiktligt ta bort resurser.
Om mallen innehåller en resurs som inte har distribuerats eftersom villkoret utvärderas som falskt beror resultatet på vilken version REST API du använder för att distribuera mallen. Om du använder en tidigare version än 2019-05-10 tas inte resursen bort. Med 2019-05-10 eller senare tas resursen bort. De senaste versionerna av Azure PowerShell och Azure CLI tar bort resursen.
Var försiktig med att använda fullständigt läge med kopieringsloopar. Alla resurser som inte har angetts i mallen när kopieringsloopen har lösts tas bort.
Om du distribuerar till fler än en resursgruppi en mall kan resurser i resursgruppen som anges i distributionsåtgärden tas bort. Resurser i de sekundära resursgrupperna tas inte bort.
Det finns några skillnader i hur resurstyper hanterar borttagningar i fullständigt läge. Överordnade resurser tas bort automatiskt när de inte finns i en mall som distribueras i fullständigt läge. Vissa underordnade resurser tas inte bort automatiskt när de inte finns i mallen. Dessa underordnade resurser tas dock bort om den överordnade resursen tas bort.
Om resursgruppen till exempel innehåller en DNS-zon ( resurstyp) och en CNAME-post ( resurstyp) är DNS-zonen den överordnade resursen för Microsoft.Network/dnsZones Microsoft.Network/dnsZones/CNAME CNAME-posten. Om du distribuerar med fullständigt läge och inte inkluderar DNS-zonen i mallen tas både DNS-zonen och CNAME-posten bort. Om du inkluderar DNS-zonen i mallen men inte inkluderar CNAME-posten tas CNAME inte bort.
En lista över hur resurstyper hanterar borttagning finns i Borttagning av Azure-resurser för distributioner i fullständigt läge.
Om resursgruppen är låsttas inte resurserna bort i fullständigt läge.
Anteckning
Endast rotnivåmallar stöder det fullständiga distributionsläget. För länkade eller kapslade mallarmåste du använda inkrementellt läge.
Distributioner på prenumerationsnivå stöder inte fullständigt läge.
Portalen stöder för närvarande inte fullständigt läge.
Inkrementellt läge
I inkrementellt läge lämnar Resource Manager oförändrade resurser som finns i resursgruppen men som inte anges i mallen. Resurser i mallen läggs till i resursgruppen.
Anteckning
När du omdistribuera en befintlig resurs i inkrementellt läge tillämpas alla egenskaper på nytt. Egenskaperna läggs inte till inkrementellt. En vanlig missuppfattning är att tro att egenskaper som inte anges i mallen lämnas oförändrade. Om du inte anger vissa egenskaper tolkar Resource Manager distributionen som att dessa värden skrivs över. Egenskaper som inte ingår i mallen återställs till standardvärdena. Ange alla värden som inte är standard för resursen, inte bara de som du uppdaterar. Resursdefinitionen i mallen innehåller alltid resursens slutliga tillstånd. Den kan inte representera en partiell uppdatering av en befintlig resurs.
I sällsynta fall implementeras faktiskt egenskaper som du anger för en resurs som en underordnad resurs. När du till exempel anger platskonfigurationsvärden för en webbapp implementeras dessa värden i den underordnade resurstypen Microsoft.Web/sites/config . Om du distribuerar om webbappen och anger ett tomt objekt för platskonfigurationsvärdena uppdateras inte den underordnade resursen. Men om du anger nya platskonfigurationsvärden uppdateras den underordnade resurstypen.
Exempelresultat
Tänk på följande scenario för att illustrera skillnaden mellan inkrementella och fullständiga lägen.
Resursgruppen innehåller:
- Resurs A
- Resurs B
- Resurs C
Mallen innehåller:
- Resurs A
- Resurs B
- Resurs D
När resursgruppen distribueras i inkrementellt läge har den:
- Resurs A
- Resurs B
- Resurs C
- Resurs D
När resurs C distribueras i fullständigt läge tas den bort. Resursgruppen har:
- Resurs A
- Resurs B
- Resurs D
Ange distributionsläge
Om du vill ange distributionsläget när du distribuerar med PowerShell använder du Mode parametern .
New-AzResourceGroupDeployment `
-Mode Complete `
-Name ExampleDeployment `
-ResourceGroupName ExampleResourceGroup `
-TemplateFile c:\MyTemplates\storage.json
Om du vill ange distributionsläget när du distribuerar med Azure CLI använder du mode parametern .
az deployment group create \
--mode Complete \
--name ExampleDeployment \
--resource-group ExampleResourceGroup \
--template-file storage.json
I följande exempel visas en länkad mall som är inställd på inkrementellt distributionsläge:
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "linkedTemplate",
"properties": {
"mode": "Incremental",
<nested-template-or-external-template>
}
}
]
Nästa steg
- Mer information om hur Resource Manager mallar finns i Förstå strukturen och syntaxen för ARM-mallar.
- Mer information om hur du distribuerar resurser finns i Distribuera resurser med ARM-mallar och Azure PowerShell.
- Information om hur du visar åtgärder för en resursprovider finns i Azure REST API.