Tryby wdrażania usługi Azure Resource Manager

Podczas wdrażania zasobów określasz, że wdrożenie jest aktualizacją przyrostową lub pełną. Różnica między tymi dwoma trybami polega na tym, Resource Manager obsługuje istniejące zasoby w grupie zasobów, które nie są w szablonie.

W obu trybach Resource Manager utworzyć wszystkie zasoby określone w szablonie. Jeśli zasób już istnieje w grupie zasobów i jego ustawienia są niezmienione, dla tego zasobu nie zostanie podjęta żadna operacja. Jeśli zmienisz wartości właściwości zasobu, zasób zostanie zaktualizowany o te nowe wartości. Jeśli spróbujesz zaktualizować lokalizację lub typ istniejącego zasobu, wdrożenie zakończy się niepowodzeniem z błędem. Zamiast tego należy wdrożyć nowy zasób z potrzebną lokalizacją lub typem.

Tryb domyślny jest przyrostowy.

Tryb ukończenia

W trybie Resource Manager usuwa zasoby, które istnieją w grupie zasobów, ale nie są określone w szablonie.

Uwaga

Zawsze używaj operacji what-if przed wdrożeniem szablonu w trybie kompletnym. What-if pokazuje, które zasoby zostaną utworzone, usunięte lub zmodyfikowane. Użyj funkcji what-if, aby uniknąć niezamierzonego usunięcia zasobów.

Jeśli szablon zawiera zasób, który nie został wdrożony, ponieważ warunek ma wartość false, wynik zależy od wersji interfejsu API REST, której używasz do wdrożenia szablonu. Jeśli używasz wersji wcześniejszej niż 2019-05-10, zasób nie zostanie usunięty. W przypadku 2019-05-10 lub nowszego zasób jest usuwany. Najnowsze wersje usługi Azure PowerShell interfejsu wiersza polecenia platformy Azure usuwają zasób.

Należy zachować ostrożność przy użyciu trybu pełnego z pętlami kopiowania. Wszystkie zasoby, które nie są określone w szablonie po rozwiązaniu pętli kopiowania, zostaną usunięte.

W przypadku wdrożenia w więcej niż jednej grupie zasobów w szabloniezasoby w grupie zasobów określonej w operacji wdrażania kwalifikują się do usunięcia. Zasoby w dodatkowych grupach zasobów nie są usuwane.

Istnieją pewne różnice w obsłudze usuwania w trybie kompletnym przez typy zasobów. Zasoby nadrzędne są automatycznie usuwane, gdy nie znajdują się w szablonie wdrożonym w trybie kompletnym. Niektóre zasoby podrzędne nie są automatycznie usuwane, gdy nie są w szablonie. Jednak te zasoby podrzędne zostaną usunięte, jeśli zasób nadrzędny zostanie usunięty.

Jeśli na przykład grupa zasobów zawiera strefę DNS (typ zasobu) i rekord CNAME (typ zasobu), strefa DNS jest zasobem nadrzędnym Microsoft.Network/dnsZones Microsoft.Network/dnsZones/CNAME rekordu CNAME. W przypadku wdrożenia w trybie ukończonym bez dołączania strefy DNS do szablonu zarówno strefa DNS, jak i rekord CNAME zostaną usunięte. Jeśli uwzględnisz strefę DNS w szablonie, ale nie uwzględnisz rekordu CNAME, rekord CNAME nie zostanie usunięty.

Aby uzyskać listę sposobu obsługi usuwania przez typy zasobów, zobacz Usuwanie zasobów platformy Azure w przypadku wdrożeń w trybie kompletnym.

Jeśli grupa zasobów jest zablokowana,tryb ukończenia nie powoduje usunięcia zasobów.

Uwaga

Tylko szablony na poziomie głównym obsługują pełny tryb wdrażania. W przypadku szablonów połączonych lub zagnieżdżonychnależy użyć trybu przyrostowego.

Wdrożenia na poziomie subskrypcji nie obsługują trybu pełnego.

Obecnie portal nie obsługuje trybu pełnego.

Tryb przyrostowy

W trybie przyrostowym Resource Manager niezmienione zasoby, które istnieją w grupie zasobów, ale nie są określone w szablonie. Zasoby w szablonie są dodawane do grupy zasobów.

Uwaga

Podczas ponownego wdychania istniejącego zasobu w trybie przyrostowym wszystkie właściwości są ponowniestosowane. Właściwości nie są dodawane przyrostowo. Powszechnym nieporozumieniem jest to, że właściwości, które nie są określone w szablonie, pozostają niezmienione. Jeśli nie określisz pewnych właściwości, Resource Manager zinterpretuje wdrożenie jako nadpisanie tych wartości. Właściwości, które nie są uwzględnione w szablonie, są resetowane do wartości domyślnych. Określ wszystkie wartości inne niż domyślne dla zasobu, a nie tylko te, które aktualizujesz. Definicja zasobu w szablonie zawsze zawiera końcowy stan zasobu. Nie może reprezentować częściowej aktualizacji istniejącego zasobu.

W rzadkich przypadkach właściwości określone dla zasobu są w rzeczywistości implementowane jako zasób podrzędny. Na przykład w przypadku podania wartości konfiguracji witryny dla aplikacji internetowej te wartości są implementowane w typie zasobu podrzędnego Microsoft.Web/sites/config . Jeśli ponownie wdepniesz aplikację internetową i określisz pusty obiekt dla wartości konfiguracji witryny, zasób podrzędny nie zostanie zaktualizowany. Jeśli jednak zostaną podane nowe wartości konfiguracji lokacji, typ zasobu podrzędnego zostanie zaktualizowany.

Przykładowy wynik

Aby zilustrować różnicę między trybami przyrostowym i kompletnym, rozważ następujący scenariusz.

Grupa zasobów zawiera:

  • Zasób A
  • Zasób B
  • Zasób C

Szablon zawiera:

  • Zasób A
  • Zasób B
  • Zasób D

Po wdrożeniu w trybie przyrostowym grupa zasobów ma:

  • Zasób A
  • Zasób B
  • Zasób C
  • Zasób D

Po wdrożeniu w trybie kompletnym zasób C jest usuwany. Grupa zasobów ma:

  • Zasób A
  • Zasób B
  • Zasób D

Ustawianie trybu wdrażania

Aby ustawić tryb wdrażania podczas wdrażania przy użyciu programu PowerShell, użyj Mode parametru .

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

Aby ustawić tryb wdrażania podczas wdrażania przy użyciu interfejsu wiersza polecenia platformy Azure, użyj mode parametru .

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

W poniższym przykładzie pokazano połączony szablon ustawiony na tryb wdrażania przyrostowego:

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

Następne kroki