Režimy nasazení Azure Resource Manageru

Při nasazování prostředků určíte, že se jedná o přírůstkovou nebo úplnou aktualizaci. Rozdíl mezi těmito dvěma režimy spočívá v tom, jak Resource Manager zpracovává existující prostředky ve skupině prostředků, které nejsou v šabloně.

V obou režimech se Resource Manager pokusí vytvořit všechny prostředky zadané v šabloně. Pokud prostředek již ve skupině prostředků existuje a jeho nastavení se nezmění, neprovedou se pro tento prostředek žádné operace. Pokud změníte hodnoty vlastností prostředku, prostředek se aktualizuje těmito novými hodnotami. Pokud se pokusíte aktualizovat umístění nebo typ existujícího prostředku, nasazení selže s chybou. Místo toho nasaďte nový prostředek s požadovaným umístěním nebo typem.

Výchozí režim je přírůstkový.

Úplný režim

V úplném režimu Resource Manager odstraní prostředky, které existují ve skupině prostředků, ale nejsou zadané v šabloně.

Poznámka

Operaci what-if vždy používejte před nasazením šablony v úplném režimu. Citlivostní analýzy ukazuje, které prostředky se vytvoří, odstraní nebo upraví. Pomocí citlivostní analýzy se vyhnete neúmyslnému odstranění prostředků.

Pokud vaše šablona obsahuje prostředek, který není nasazený, protože podmínka se vyhodnotí jako false, výsledek závisí na tom, jakou verzi rozhraní REST API použijete k nasazení šablony. Pokud používáte verzi starší než 2019-05-10, prostředek se neodstraní. V 10. 5. 2019 nebo novějším se prostředek odstraní. Nejnovější verze Azure PowerShell a Azure CLI prostředek odstraní.

Při používání úplného režimu se smyčkami kopírování buďte opatrní. Všechny prostředky, které nejsou v šabloně po vyřešení smyčky kopírování zadané, se odstraní.

Pokud nasadíte do více než jedné skupiny prostředků v šabloně, prostředky ve skupině prostředků zadané v operaci nasazení mohou být odstraněny. Prostředky v sekundárních skupinách prostředků se neodstraní.

Existují určité rozdíly ve způsobu, jakým typy prostředků zpracovávají odstranění v úplném režimu. Nadřazené prostředky se automaticky odstraní, pokud nejsou v šabloně, která je nasazená v úplném režimu. Některé podřízené prostředky se neodstraní automaticky, když nejsou v šabloně. Tyto podřízené prostředky se však odstraní, pokud dojde k odstranění nadřazeného prostředku.

Pokud například vaše skupina prostředků obsahuje zónu DNS (Microsoft.Network/dnsZones typ prostředku) a záznam CNAME (Microsoft.Network/dnsZones/CNAME typ prostředku), zóna DNS je nadřazeným prostředkem záznamu CNAME. Pokud nasazení provedete v úplném režimu a nezahrnete do šablony zónu DNS, odstraní se zóna DNS i záznam CNAME. Pokud do šablony zahrnete zónu DNS, ale nezahrnete záznam CNAME, CNAME se neodstraní.

Seznam toho, jak typy prostředků zpracovávají odstranění, najdete v tématu Odstranění prostředků Azure pro nasazení v úplném režimu.

Pokud je skupina prostředků uzamčená, úplný režim prostředky neodstraní.

Poznámka

Režim úplného nasazení podporují pouze šablony na kořenové úrovni. Pro propojené nebo vnořené šablony musíte použít přírůstkový režim.

Nasazení na úrovni předplatného nepodporují úplný režim.

Portál v současné době nepodporuje úplný režim.

Přírůstkový režim

V přírůstkovém režimu Resource Manager ponechá nezměněné prostředky, které existují ve skupině prostředků, ale nezadávají se v šabloně. Prostředky v šabloně se přidají do skupiny prostředků.

Důležité

Při opětovném nasazení existujícího prostředku v přírůstkovém režimu se znovu podají všechny vlastnosti. Vlastnosti se nepřidávají postupně. Běžným omylem je představa, že vlastnosti, které nejsou v šabloně uvedené, zůstanou beze změny. Pokud nezadáte určité vlastnosti, Resource Manager interpretuje nasazení jako přepsání těchto hodnot. Vlastnosti, které nejsou součástí šablony, se obnoví na výchozí hodnoty. Zadejte pro prostředek všechny jiné než výchozí hodnoty, nejen ty, které aktualizujete. Definice prostředku v šabloně vždy obsahuje konečný stav prostředku. Nemůže představovat částečnou aktualizaci existujícího prostředku.

Upozornění

Ve výjimečných případech můžete zadat vlastnosti buď pro prostředek, nebo pro některý z jeho podřízených prostředků. Dvěma běžnými příklady jsou podsítě ve virtuálních sítích a hodnoty konfigurace lokality pro webové aplikace. V těchto případech musíte přírůstkové aktualizace zpracovávat pečlivě.

V případě podsítí zadejte hodnoty prostřednictvím subnets vlastnosti prostředku Microsoft.Network/virtualNetworks . Nedefinujte hodnoty prostřednictvím podřízeného prostředku Microsoft.Network/virtualNetworks/subnets. Dokud jsou podsítě definované ve virtuální síti, můžete virtuální síť nasadit znovu a podsítě neztratíte.

Hodnoty konfigurace lokality jsou implementovány v podřízeného typu Microsoft.Web/sites/configprostředku . Pokud webovou aplikaci znovu nasadíte a zadáte prázdný objekt pro hodnoty konfigurace webu, podřízený prostředek se neaktualizuje. Pokud ale zadáte nové hodnoty konfigurace lokality, podřízený typ prostředku se aktualizuje.

Příklad výsledku

Pokud chcete ilustrovat rozdíl mezi přírůstkovým a úplným režimem, zvažte následující scénář.

Skupina prostředků obsahuje:

  • Prostředek A
  • Zdroj B
  • Prostředek C

Šablona obsahuje:

  • Prostředek A
  • Zdroj B
  • Prostředek D

Při nasazení v přírůstkovém režimu má skupina prostředků:

  • Prostředek A
  • Zdroj B
  • Prostředek C
  • Prostředek D

Při nasazení v úplném režimu se prostředek C odstraní. Skupina prostředků má:

  • Prostředek A
  • Zdroj B
  • Prostředek D

Nastavení režimu nasazení

Pokud chcete nastavit režim nasazení při nasazování pomocí PowerShellu Mode , použijte parametr .

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

Pokud chcete nastavit režim nasazení při nasazování pomocí Azure CLI, použijte mode parametr .

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

Následující příklad ukazuje propojenou šablonu nastavenou na režim přírůstkového nasazení:

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

Další kroky