Eksportowanie szablonu przy użyciu Azure PowerShell

Aby ułatwić tworzenie szablonów usługi Azure Resource Manager, możesz wyeksportować szablon z istniejących zasobów. Wyeksportowany szablon ułatwia zrozumienie składni i właściwości JSON, które wdrażają zasoby. Aby zautomatyzować przyszłe wdrożenia, zacznij od wyeksportowanego szablonu i zmodyfikuj go dla danego scenariusza. Proces eksportowania szablonu próbuje utworzyć szablon do użycia. Jednak większość wyeksportowanych szablonów wymaga pewnych modyfikacji, zanim będzie można ich używać do wdrażania zasobów platformy Azure.

Resource Manager umożliwia wybranie co najmniej jednego zasobu do eksportowania do szablonu. Możesz skupić się na dokładnie zasobach potrzebnych w szablonie.

W tym artykule przedstawiono sposób eksportowania szablonów za pomocą Azure PowerShell. Aby uzyskać inne opcje, zobacz:

Wybierz odpowiednią opcję eksportu

Istnieją dwa sposoby eksportowania szablonu:

  • Eksportowanie z grupy zasobów lub zasobu. Ta opcja generuje nowy szablon z istniejących zasobów. Wyeksportowany szablon jest "migawką" bieżącego stanu grupy zasobów. Możesz wyeksportować całą grupę zasobów lub określone zasoby w ramach tej grupy zasobów.

  • Zapisz z historii. Ta opcja pobiera dokładną kopię szablonu używanego do wdrożenia. Należy określić wdrożenie z historii wdrożenia.

W zależności od wybranej opcji wyeksportowane szablony mają różne cechy.

Z grupy zasobów lub zasobu Z historii
Szablon jest generowany automatycznie. Prawdopodobnie chcesz ulepszyć kod przed jego wdrożeniem. Szablon jest dokładną kopią elementu utworzonego przez autora szablonu. Wszystko jest gotowe do ponownego wdrożenia bez żadnych zmian.
Szablon to migawka bieżącego stanu zasobów. Obejmuje ona wszelkie ręczne zmiany wprowadzone po wdrożeniu. Szablon wyświetla tylko stan zasobów w momencie wdrożenia. Wszelkie zmiany ręczne wprowadzone po wdrożeniu nie są uwzględniane.
Możesz wybrać zasoby z grupy zasobów do wyeksportowania. Uwzględniane są wszystkie zasoby dla określonego wdrożenia. Nie można wybrać podzestawu tych zasobów ani dodać zasobów, które zostały dodane w innym czasie.
Szablon zawiera wszystkie właściwości zasobów, w tym niektóre właściwości, które nie są zwykle ustawiane podczas wdrażania. Możesz usunąć lub wyczyścić te właściwości przed ponownym użyciu szablonu. Szablon zawiera tylko właściwości wymagane do wdrożenia. Szablon jest bardziej rozrzedniejszy i łatwiejszy do odczytania.
Szablon prawdopodobnie nie zawiera wszystkich parametrów potrzebnych do ponownego użycia. Większość wartości właściwości jest zakodowana w szablonie. Aby ponownie wdrożyć szablon w innych środowiskach, należy dodać parametry zwiększające możliwość konfigurowania zasobów. Możesz usunąć zaznaczenie opcji Uwzględnij parametry , aby móc tworzyć własne parametry. Szablon zawiera parametry, które ułatwiają ponowne wdrażanie w różnych środowiskach.

Wyeksportuj szablon z grupy zasobów lub zasobu, gdy:

  • Należy przechwycić zmiany w zasobach, które zostały wprowadzone po oryginalnym wdrożeniu.
  • Chcesz wybrać, które zasoby są eksportowane.
  • Zasoby nie zostały utworzone za pomocą szablonu.

Wyeksportuj szablon z historii, gdy:

  • Potrzebujesz łatwego do ponownego użycia szablonu.
  • Nie musisz uwzględniać zmian wprowadzonych po oryginalnym wdrożeniu.

Ograniczenia

Eksportowanie nie gwarantuje pomyślnego działania. Eksportowanie nie jest niezawodnym sposobem przekształcania wstępnie istniejących zasobów w szablony, które mogą być używane w środowisku produkcyjnym. Lepiej jest tworzyć zasoby od podstaw przy użyciu ręcznie napisanego pliku Bicep, szablonu usługi ARM lub narzędzia terraform.

Podczas eksportowania z grupy zasobów lub zasobu wyeksportowany szablon jest generowany na podstawie opublikowanych schematów dla każdego typu zasobu. Czasami schemat nie ma najnowszej wersji typu zasobu. Sprawdź wyeksportowany szablon, aby upewnić się, że zawiera potrzebne właściwości. W razie potrzeby zmodyfikuj wyeksportowany szablon, aby korzystać z potrzebnej wersji interfejsu API.

Niektóre parametry hasła mogą brakować w wyeksportowanych szablonach. Należy sprawdzić odwołanie do szablonu i ręcznie dodać te parametry, zanim będzie można użyć szablonów do wdrożenia zasobów.

Funkcja szablonu eksportu nie obsługuje eksportowania zasobów Azure Data Factory. Aby dowiedzieć się więcej o sposobie eksportowania zasobów usługi Data Factory, zobacz Kopiowanie lub klonowanie fabryki danych w Azure Data Factory.

Aby wyeksportować zasoby utworzone za pomocą klasycznego modelu wdrażania, należy przeprowadzić migrację ich do modelu wdrażania Resource Manager.

Jeśli podczas eksportowania szablonu zostanie wyświetlone ostrzeżenie wskazujące, że typ zasobu nie został wyeksportowany, nadal możesz odnaleźć właściwości tego zasobu. Aby uzyskać informacje o właściwościach zasobów, zobacz dokumentację szablonu. Możesz również zapoznać się z interfejsem API REST platformy Azure dla typu zasobu.

Istnieje limit 200 zasobów w grupie zasobów, dla której został utworzony wyeksportowany szablon. Jeśli spróbujesz wyeksportować grupę zasobów, która ma więcej niż 200 zasobów, zostanie wyświetlony komunikat Export template is not supported for resource groups more than 200 resources o błędzie.

Eksportowanie szablonu z grupy zasobów

Po skonfigurowaniu grupy zasobów możesz wyeksportować szablon usługi Azure Resource Manager dla grupy zasobów.

Aby wyeksportować wszystkie zasoby w grupie zasobów, użyj polecenia cmdlet Export-AzResourceGroup i podaj nazwę grupy zasobów.

Export-AzResourceGroup -ResourceGroupName demoGroup

Zapisuje szablon jako plik lokalny.

Zamiast eksportować wszystkie zasoby w grupie zasobów, możesz wybrać zasoby do wyeksportowania.

Aby wyeksportować jeden zasób, przekaż ten identyfikator zasobu.

$resource = Get-AzResource `
  -ResourceGroupName <resource-group-name> `
  -ResourceName <resource-name> `
  -ResourceType <resource-type>
Export-AzResourceGroup `
  -ResourceGroupName <resource-group-name> `
  -Resource $resource.ResourceId

Aby wyeksportować więcej niż jeden zasób, przekaż identyfikatory zasobów w tablicy.

Export-AzResourceGroup `
  -ResourceGroupName <resource-group-name> `
  -Resource @($resource1.ResourceId, $resource2.ResourceId)

Podczas eksportowania szablonu można określić, czy parametry są używane w szablonie. Domyślnie parametry nazw zasobów są uwzględniane, ale nie mają wartości domyślnej.

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "type": "String"
  }
}

Jeśli używasz parametru -SkipResourceNameParameterization podczas eksportowania szablonu, parametry nazw zasobów nie są uwzględnione w szablonie. Zamiast tego nazwa zasobu jest ustawiana bezpośrednio na zasób na jego bieżącą wartość. Nie można dostosować nazwy podczas wdrażania.

"resources": [
  {
    "type": "Microsoft.Web/serverfarms",
    "apiVersion": "2022-09-01",
    "name": "demoHostPlan",
    ...
  }
]

Jeśli używasz parametru -IncludeParameterDefaultValue podczas eksportowania szablonu, parametr szablonu zawiera wartość domyślną ustawioną na bieżącą wartość. Możesz użyć tej wartości domyślnej lub zastąpić wartość domyślną, przekazując inną wartość.

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "defaultValue": "demoHostPlan",
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "defaultValue": "webSite3bwt23ktvdo36",
    "type": "String"
  }
}

Zapisywanie szablonu z historii wdrożenia

Szablon można zapisać z wdrożenia w historii wdrożenia. Otrzymany szablon jest dokładnie taki, który został użyty do wdrożenia.

Aby pobrać szablon z wdrożenia grupy zasobów, użyj polecenia cmdlet Save-AzResourceGroupDeploymentTemplate . Należy określić nazwę wdrożenia do pobrania. Aby uzyskać pomoc dotyczącą uzyskiwania nazwy wdrożenia, zobacz Wyświetlanie historii wdrażania za pomocą usługi Azure Resource Manager.

Save-AzResourceGroupDeploymentTemplate -ResourceGroupName demoGroup -DeploymentName demoDeployment

Szablon jest zapisywany jako plik lokalny o nazwie wdrożenia.

Aby uzyskać szablony wdrożone na innych poziomach, użyj:

Następne kroki