Co to są szablony usługi ARM?

Dzięki przejściu do chmury wiele zespołów przyjęło metody programowania zwinnego. 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 należy zdefiniować 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żdy 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.

Porada

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 infrastrukturę jako opcje 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ć między użyciem szablonów usługi ARM a jedną z pozostałych usług infrastruktury jako 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 wdrażać 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 wiele razy wdrożyć ten sam szablon 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, 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.

    Porównanie wdrożenia szablonu

  • 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. Przed rozpoczęciem korzystania z 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 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. 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 ukończonym w połowie.

  • Śledzone wdrożenia: w 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.

    Historia wdrożenia

  • Zasady jako kod: Azure Policy to zasady jako struktura kodu do automatyzowania ł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łe wdrażanie: 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 zapewnienia szybkich i niezawodnych aktualizacji aplikacji i infrastruktury. Za pomocą usługi Azure DevOps i zadania szablonu 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: 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. Uzyskujesz 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 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

Podczas wdrażania szablonu Resource Manager konwertuje szablon 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": "2019-04-01",
    "name": "mystorageaccount",
    "location": "westus",
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "StorageV2",
    "properties": {}
  }
]

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=2019-04-01
REQUEST BODY
{
  "location": "westus",
  "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. Szablon można wielokrotnie wdrażać 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.

szablon trójwarstwowy

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.

zagnieżdżony szablon warstwowy

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.

szablon warstwowy

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