Udostępnij za pośrednictwem


Co to są szablony usługi ARM?

Wraz z przejściem do chmury wiele zespołów przyjęło elastyczne metody programowania. Te zespoły dokonują szybkich iteracji. Muszą one wielokrotnie wdrażać swoje rozwiązania w chmurze i wiedzieć, że ich infrastruktura jest w stanie niezawodnym. Ponieważ infrastruktura stała się częścią procesu iteracyjnego, podział między operacjami a programowaniem zniknął. Zespoły muszą zarządzać infrastrukturą i kodem aplikacji za pośrednictwem ujednoliconego procesu.

Aby sprostać tym wyzwaniom, możesz zautomatyzować wdrożenia i wykorzystać praktykę infrastruktury jako kodu. W kodzie zdefiniujesz infrastrukturę, która musi zostać wdrożona. Kod infrastruktury staje się częścią projektu. Podobnie jak kod aplikacji, kod infrastruktury jest przechowywany w repozytorium źródłowym i jego wersji. Każda osoba w twoim zespole może uruchomić kod i wdrożyć podobne środowiska.

Aby zaimplementować infrastrukturę jako kod dla rozwiązań platformy Azure, skorzystaj z szablonów usługi Azure Resource Manager (szablonów usługi ARM). Szablon to plik w formacie JavaScript Object Notation (JSON) definiujący infrastrukturę i konfigurację projektu. Szablon używa składni deklaratywnej, która pozwala określić, co zamierzasz wdrożyć, bez konieczności pisania w tym celu sekwencji poleceń programistycznych. W szablonie określasz zasoby do wdrożenia i właściwości dla tych zasobów.

Napiwek

Wprowadziliśmy nowy język o nazwie Bicep , który oferuje takie same możliwości jak szablony usługi ARM, ale ze składnią, która jest łatwiejsza w użyciu. Każdy plik Bicep jest automatycznie konwertowany na szablon usługi ARM podczas wdrażania. Jeśli rozważasz opcję infrastruktury jako kodu, zalecamy zapoznanie się z Bicep. Aby uzyskać więcej informacji, zobacz Co to jest Bicep?.

Aby dowiedzieć się, jak rozpocząć pracę z szablonami usługi ARM, zobacz poniższy film wideo.

Dlaczego warto wybrać szablony usługi ARM?

Jeśli próbujesz zdecydować się na użycie szablonów usługi ARM i jednej z innych infrastruktury jako usług kodu, rozważ następujące zalety korzystania z szablonów:

  • Składnia deklaratywna: szablony usługi ARM umożliwiają deklaratywne tworzenie i wdrażanie całej infrastruktury platformy Azure. Można na przykład wdrożyć nie tylko maszyny wirtualne, ale także infrastrukturę sieciową, systemy magazynowania i wszelkie inne zasoby, które mogą być potrzebne.

  • Powtarzalne wyniki: wielokrotnie wdrażaj infrastrukturę w całym cyklu projektowania i masz pewność, że zasoby są wdrażane w spójny sposób. Szablony są idempotentne, co oznacza, że można wdrożyć ten sam szablon wiele razy i uzyskać te same typy zasobów w tym samym stanie. Można opracować jeden szablon reprezentujący żądany stan, zamiast opracowywać wiele oddzielnych szablonów do reprezentowania aktualizacji.

  • Orkiestracja: nie musisz martwić się o złożoność operacji porządkowania. Usługa Resource Manager organizuje wdrażanie współzależnych zasobów, aby były tworzone w odpowiedniej kolejności. Jeśli to możliwe, usługa Resource Manager wdraża zasoby równolegle, aby wdrożenia zakończyły się szybciej niż wdrożenia szeregowe. Szablon można wdrożyć za pomocą jednego polecenia, a nie za pomocą wielu poleceń imperatywnych.

    Diagram przedstawiający różnicę między wdrożeniem imperatywnego i deklaratywnego.

  • Pliki modułowe: szablony można podzielić na mniejsze składniki wielokrotnego użytku i połączyć je razem w czasie wdrażania. Można również zagnieżdżać jeden szablon wewnątrz innego szablonu.

  • Utwórz dowolny zasób platformy Azure: możesz natychmiast używać nowych usług i funkcji platformy Azure w szablonach. Gdy tylko dostawca zasobów wprowadzi nowe zasoby, możesz wdrożyć te zasoby za pomocą szablonów. Nie musisz czekać na zaktualizowanie narzędzi ani modułów przed użyciem nowych usług.

  • Rozszerzalność: za pomocą skryptów wdrażania można dodawać skrypty programu PowerShell lub powłoki Bash do szablonów. Skrypty wdrażania rozszerzają możliwość konfigurowania zasobów podczas wdrażania. Skrypt można uwzględnić w szablonie lub przechowywać w źródle zewnętrznym i odwoływać się do tego szablonu. Skrypty wdrażania umożliwiają ukończenie kompleksowej konfiguracji środowiska w jednym szablonie usługi ARM.

  • Testowanie: Możesz upewnić się, że szablon jest zgodny z zalecanymi wytycznymi, testując go przy użyciu zestawu narzędzi szablonu usługi ARM (arm-ttk). Ten zestaw testowy to skrypt programu PowerShell, który można pobrać z usługi GitHub. Zestaw narzędzi ułatwia opracowywanie wiedzy przy użyciu języka szablonu.

  • Podgląd zmian: możesz użyć operacji analizy co-jeżeli, aby uzyskać podgląd zmian przed wdrożeniem szablonu. W przypadku analizy co-jeżeli zobaczysz, które zasoby zostaną utworzone, zaktualizowane lub usunięte, oraz wszelkie właściwości zasobów, które zostaną zmienione. Operacja analizy co-jeżeli sprawdza bieżący stan środowiska i eliminuje konieczność zarządzania stanem.

  • Wbudowana walidacja: Szablon jest wdrażany tylko po zakończeniu walidacji. Usługa Resource Manager sprawdza szablon przed rozpoczęciem wdrażania, aby upewnić się, że wdrożenie zakończy się pomyślnie. Wdrożenie jest mniej prawdopodobne, aby zatrzymać się w stanie półkońcowym.

  • Śledzone wdrożenia: w witrynie Azure Portal możesz przejrzeć historię wdrażania i uzyskać informacje o wdrożeniu szablonu. Zobaczysz szablon, który został wdrożony, wartości parametrów przekazane i wszystkie wartości wyjściowe. Inne infrastruktury jako usługi kodu nie są śledzone za pośrednictwem portalu.

    Zrzut ekranu witryny Azure Portal przedstawiający historię wdrażania.

  • Zasady jako kod: Usługa Azure Policy jest zasadami jako strukturą kodu w celu zautomatyzowania ładu. Jeśli używasz zasad platformy Azure, korygowanie zasad odbywa się w przypadku niezgodnych zasobów podczas wdrażania za pomocą szablonów.

  • Strategie wdrażania: możesz skorzystać z strategii udostępnianych przez firmę Microsoft w celu spełnienia standardów prawnych i zgodności. Te strategie obejmują wstępnie utworzone szablony dla różnych architektur.

  • Integracja ciągłej integracji/ciągłego wdrażania: można zintegrować szablony z narzędziami ciągłej integracji i ciągłego wdrażania (CI/CD), które mogą automatyzować potoki wydań w celu zapewnienia szybkich i niezawodnych aktualizacji aplikacji i infrastruktury. Za pomocą zadania szablonu usługi Azure DevOps i usługi Resource Manager można używać usługi Azure Pipelines do ciągłego kompilowania i wdrażania projektów szablonów usługi ARM. Aby dowiedzieć się więcej, zobacz Projekt vs z potokami i Samouczek: ciągła integracja szablonów usługi Azure Resource Manager z usługą Azure Pipelines.

  • Kod możliwy do wyeksportowania: szablon dla istniejącej grupy zasobów można uzyskać, eksportując bieżący stan grupy zasobów lub wyświetlając szablon używany do określonego wdrożenia. Przeglądając wyeksportowany szablon, można poznać jego składnię.

  • Narzędzia do tworzenia: szablony można tworzyć za pomocą programu Visual Studio Code i rozszerzenia narzędzia szablonu. Uzyskujesz funkcję IntelliSense, wyróżnianie składni, pomoc w wierszu i wiele innych funkcji językowych. Oprócz programu Visual Studio Code można również użyć programu Visual Studio.

Plik szablonu

W szablonie można pisać wyrażenia szablonu , które rozszerzają możliwości JSON. Te wyrażenia korzystają z funkcji udostępnianych przez usługę Resource Manager.

Szablon zawiera następujące sekcje:

  • Parametry — podaj wartości podczas wdrażania, które umożliwiają używanie tego samego szablonu w różnych środowiskach.

  • Zmienne — zdefiniuj wartości ponownie używane w szablonach. Można je tworzyć na podstawie wartości parametrów.

  • Funkcje zdefiniowane przez użytkownika — tworzenie dostosowanych funkcji, które upraszczają szablon.

  • Zasoby — określ zasoby do wdrożenia.

  • Dane wyjściowe — zwraca wartości z wdrożonych zasobów.

Proces wdrażania szablonu

Kiedy wdrażasz szablon, usługa Resource Manager konwertuje go na operacje interfejsu API REST. Na przykład, gdy usługa Resource Manager odbiera szablon o następującej definicji zasobu:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2022-09-01",
    "name": "mystorageaccount",
    "location": "centralus",
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "StorageV2"
  },
]

Konwertuje definicję do następującej operacji interfejsu API REST, która zostaje wysłana do dostawcy zasobów Microsoft.Storage:

PUT
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/mystorageaccount?api-version=2022-09-01
REQUEST BODY
{
  "location": "centralus",
  "sku": {
    "name": "Standard_LRS"
  },
  "kind": "StorageV2",
  "properties": {}
}

Zwróć uwagę, że parametr apiVersion ustawiony w szablonie zasobu jest używany jako wersja interfejsu API dla operacji REST. Możesz wielokrotnie wdrażać szablon i mieć pewność, że będzie nadal działać. Korzystając z tej samej wersji interfejsu API, nie musisz martwić się o zmiany powodujące niezgodność, które mogą zostać wprowadzone w nowszych wersjach.

Aby wdrożyć szablon, użyj dowolnej z następujących opcji:

Projekt szablonu

Sposób definiowania szablonów i grup zasobów zależy wyłącznie od użytkownika, podobnie jak sposób zarządzania rozwiązaniem. Można na przykład wdrożyć aplikację trójwarstwową za pomocą jednego szablonu do pojedynczej grupy zasobów.

Diagram przedstawiający wdrożenie aplikacji trójwarstwowej przy użyciu jednego szablonu.

Nie trzeba jednak definiować całej infrastruktury w jednym szablonie. Często dobrym rozwiązaniem jest podział wymagań dotyczących wdrożenia na szablony przeznaczone do określonego celu. Te szablony mogą bez problemu być używane wielokrotnie w różnych rozwiązaniach. Aby wdrożyć konkretne rozwiązanie, należy utworzyć główny szablon, który łączy wszystkie wymagane szablony. Na poniższej ilustracji przedstawiono sposób wdrażania rozwiązania trójwarstwowego za pomocą szablonu nadrzędnego, który zawiera trzy szablony zagnieżdżone.

Diagram przedstawiający wdrożenie aplikacji trójwarstwowej przy użyciu szablonów zagnieżdżonych.

Jeśli przewidujesz, że warstwy będą miały osobne cykle, możesz wdrożyć trzy warstwy do osobnych grup zasobów. Należy pamiętać, że zasoby mogą nadal być powiązane z zasobami w innych grupach zasobów.

Diagram przedstawiający wdrożenie aplikacji trójwarstwowej z oddzielnymi grupami zasobów.

Informacje dotyczące szablonów zagnieżdżonych można znaleźć w temacie Using linked templates with Azure Resource Manager (Używanie szablonów połączonych w usłudze Azure Resource Manager).

Udostępnianie szablonów

Po utworzeniu szablonu możesz udostępnić go innym użytkownikom w organizacji. Specyfikacje szablonu umożliwiają przechowywanie szablonu jako typu zasobu. Kontrola dostępu oparta na rolach służy do zarządzania dostępem do specyfikacji szablonu. Użytkownicy z dostępem do odczytu do specyfikacji szablonu mogą go wdrożyć, ale nie zmieniają szablonu.

Takie podejście oznacza, że można bezpiecznie udostępniać szablony spełniające standardy organizacji.

Następne kroki