Udostępnij za pośrednictwem


Eksportowanie szablonu przy użyciu programu 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 w twoim scenariuszu. 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żyć do wdrożenia zasobów platformy Azure.

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

W tym artykule pokazano, jak eksportować szablony za pomocą programu Azure PowerShell. Aby uzyskać inne opcje, zobacz:

Wybieranie odpowiedniej opcji eksportu

Istnieją dwa sposoby eksportowania szablonu:

  • Eksportuj z grupy zasobów lub zasobu. Ta opcja generuje nowy szablon z istniejących zasobów. Wyeksportowany szablon to "migawka" 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 warto 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. Zawiera on wszelkie ręczne zmiany wprowadzone po wdrożeniu. Szablon pokazuje 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ć podzbioru 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. Przed ponownym rozpoczęciem korzystania z szablonu możesz usunąć lub wyczyścić te właściwości. 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, które zwiększają możliwość konfigurowania zasobów. Możesz usunąć zaznaczenie pola Wyboru 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 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 dla typu zasobu. Sprawdź wyeksportowany szablon, aby upewnić się, że zawiera on potrzebne właściwości. W razie potrzeby zmodyfikuj wyeksportowany szablon, aby korzystać z potrzebnej wersji interfejsu API.

W wyeksportowanych szablonach mogą brakować niektórych parametrów hasła. 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 usługi Azure Data Factory. Aby dowiedzieć się, jak wyeksportować zasoby usługi Data Factory, zobacz Kopiowanie lub klonowanie fabryki danych w usłudze Azure Data Factory.

Aby wyeksportować zasoby utworzone za pomocą klasycznego modelu wdrażania, należy przeprowadzić migrację ich do modelu wdrażania przy użyciu usługi 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 dokumentacja 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 zawierającą 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 podczas eksportowania -SkipResourceNameParameterization szablonu, parametry nazw zasobów nie są uwzględniane 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 wdrażania

Szablon można zapisać z wdrożenia w historii wdrażania. 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