Co to są szablony usługi ARM?

Dzięki przejściu 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 i programowaniem zniknął. Zespoły muszą zarządzać infrastrukturą i kodem aplikacji za pomocą 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ślisz zasoby do wdrożenia i właściwości tych zasobów.

Porada

Wprowadziliśmy nowy język o nazwie Bicep , który oferuje te same możliwości co szablony usługi ARM, ale ze składnią, która jest łatwiejsza do użycia. Każdy plik Bicep jest automatycznie konwertowany na szablon usługi ARM podczas wdrażania. Jeśli rozważasz infrastrukturę jako opcje kodu, zalecamy zapoznanie się z kodem 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 inne zasoby, które mogą być potrzebne.

  • Powtarzalne wyniki: Wielokrotnie wdrażaj infrastrukturę w całym cyklu życia programowania 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, który reprezentuje żądany stan, zamiast opracowywać wiele oddzielnych szablonów do reprezentowania aktualizacji.

  • Orkiestracja: nie musisz martwić się o złożoność operacji porządkowania. Resource Manager organizuje wdrażanie współzależnych zasobów, aby były tworzone w odpowiedniej kolejności. Jeśli to możliwe, Resource Manager wdraża zasoby równolegle, dzięki czemu wdrożenia zakończą się szybciej niż wdrożenia szeregowe. Szablon jest wdrażany 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: możesz podzielić szablony 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. Przed użyciem nowych usług nie trzeba czekać na zaktualizowanie narzędzi ani modułów.

  • 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że być uwzględniony w szablonie lub przechowywany w źródle zewnętrznym i przywołyny w szablonie. Skrypty wdrażania umożliwiają ukończenie konfiguracji środowiska kompleksowego 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.

  • Zmiany w wersji zapoznawczej: możesz użyć operacji analizy warunkowej , aby uzyskać podgląd zmian przed wdrożeniem szablonu. W przypadku analizy warunkowej zobaczysz, które zasoby zostaną utworzone, zaktualizowane lub usunięte oraz wszelkie właściwości zasobu, 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 dopiero po przejściu weryfikacji. 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ńczeniu.

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

    Zrzut ekranu przedstawiający Azure Portal z historią wdrożenia.

  • Zasady jako kod: Azure Policy to zasady jako struktura kodu służąca do automatyzowania ładu. Jeśli używasz zasad platformy Azure, korygowanie zasad odbywa się w niezgodnych zasobach po wdrożeniu za pomocą szablonów.

  • Strategia 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żesz 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 szybkiego i niezawodnego aktualizowania aplikacji i infrastruktury. Korzystając z usługi Azure DevOps i Resource Manager zadania szablonu, możesz użyć 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: możesz pobrać szablon dla istniejącej grupy zasobów, 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ą Visual Studio Code i rozszerzenia narzędzia szablonu. Uzyskasz funkcję IntelliSense, wyróżnianie składni, pomoc w wierszu i wiele innych funkcji językowych. Oprócz 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 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, które są ponownie używane w szablonach. Można je konstruować z 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 właściwość apiVersion ustawiona w szablonie zasobu jest używana 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 mogą zmieniać szablonu.

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

Następne kroki