Co to są szablony usługi ARM?

Wraz z przejściem do chmury wiele zespołów przyjmło metody projektowania zwinnego. Te zespoły szybko iterują. Muszą wielokrotnie wdrażać swoje rozwiązania w chmurze i wiedzieć, że ich infrastruktura jest w niezawodnym stanie. Ponieważ infrastruktura stała się częścią procesu iteracyjnego, podział między operacjami i opracowywaniem zniknął. Zespoły muszą zarządzać infrastrukturą i kodem aplikacji w ramach ujednoliconego procesu.

Aby sprostać tym wyzwaniom, możesz zautomatyzować wdrożenia i wykorzystać praktykę infrastruktury jako kodu. W kodzie definiuje się infrastrukturę, która ma zostać wdrożona. Kod infrastruktury staje się częścią projektu. Podobnie jak kod aplikacji, kod infrastruktury jest zapisywany w repozytorium źródłowym i wersjonarny. Każdy zespół może uruchomić kod i wdrożyć podobne środowiska.

Aby zaimplementować infrastrukturę jako kod dla rozwiązań platformy Azure, Azure Resource Manager szablonów usługi ARM. Szablon jest plikiem JavaScript Object Notation (JSON), który definiuje 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 należy określić zasoby do wdrożenia oraz właściwości dla tych zasobów.

Wprowadziliśmy nowy język o nazwie Bicep, który jest używany do tworzenia pliku JSON szablonu usługi ARM. Pliki Bicep i szablony JSON oferują te same możliwości. Szablony można konwertować między tymi dwoma językami. Bicep udostępnia składnię, która jest łatwiejsza w użyciu podczas tworzenia szablonów. Aby uzyskać więcej informacji, zobacz Co to jest Bicep?.

Aby dowiedzieć się, jak rozpocząć pracę z szablonami arm, zobacz poniższy film wideo.

Dlaczego warto wybierać szablony arm?

Jeśli próbujesz zdecydować się na użycie szablonów usługi ARM i jednej z innych usług infrastruktury jako usługi kodu, weź pod uwagę następujące korzyści z używania 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 potrzebne zasoby.

  • 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 ten sam szablon można wdrożyć wiele razy i uzyskać te same typy zasobów w tym samym stanie. Zamiast tworzyć wiele oddzielnych szablonów reprezentujących aktualizacje, można utworzyć jeden szablon reprezentujący żądany stan.

  • Aranżacja: Nie musisz martwić się o złożone operacje zamawiania. Resource Manager organizowanie wdrażania współzależnych zasobów, aby zostały one utworzone w odpowiedniej kolejności. Jeśli to możliwe, Resource Manager wdraża zasoby równolegle, aby wdrożenia kończyły się szybciej niż wdrożenia szeregowe. Szablon jest wdrażany za pomocą jednego polecenia, a nie za pomocą wielu poleceń imperatywnych.

    Template deployment porównanie

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

  • Utwórz dowolny zasób platformy Azure: możesz od razu korzystać z 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 lub modułów przed rozpoczęciem korzystania z nowych usług.

  • Rozszerzalność: za pomocą skryptów wdrażaniamożna dodawać skrypty programu PowerShell lub Bash do szablonów. Skrypty wdrażania rozszerzają możliwość skonfigurowania zasobów podczas wdrażania. Skrypt może być zawarty w szablonie lub przechowywany w źródle zewnętrznym i przywołyowany w szablonie. Skrypty wdrażania zapewniają możliwość ukończenia 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 rozwijanie wiedzy przy użyciu języka szablonów.

  • Podgląd zmian: możesz użyć operacji what-if, aby uzyskać podgląd zmian przed wdrożeniem szablonu. Jeśli chcesz, możesz zobaczyć, które zasoby zostaną utworzone, zaktualizowane lub usunięte, oraz wszystkie właściwości zasobów, które zostaną zmienione. Operacja what-if sprawdza bieżący stan środowiska i eliminuje konieczność zarządzania stanem.

  • Wbudowana walidacja: szablon jest wdrażany tylko po zakończeniu weryfikacji. Resource Manager szablon przed rozpoczęciem wdrażania, aby upewnić się, że wdrożenie zakończy się pomyślnie. Prawdopodobieństwo zatrzymania wdrożenia jest mniejsze.

  • Śledzone wdrożenia: w Azure Portal można przeglądać historię wdrażania i uzyskać informacje o wdrożeniu szablonu. Możesz zobaczyć wdrożony szablon, przekazane wartości parametrów i wszelkie wartości wyjściowe. Inne usługi infrastruktury jako kodu nie są śledzone za pośrednictwem portalu.

    Historia wdrożenia

  • Zasady jako kod: Azure Policy to struktura kodu do automatyzacji ładu. Jeśli używasz zasad platformy Azure, korygowanie zasad jest wykonywane dla niezgodnych zasobów podczas wdrażania za pomocą szablonów.

  • Strategie wdrażania: możesz wykorzystać usługę Blueprints dostarczaną przez firmę Microsoft, aby spełnić standardy prawne i zgodności. Te strategie obejmują wstępnie sbudowaną szablony dla różnych architektur.

  • Integracja ciągłej integracji/ciągłego wdrażania: szablony można zintegrować z narzędziami ciągłej integracji/ciągłego wdrażania, które mogą automatyzować potoki wydania w celu szybkiego i niezawodnego wdrażania aplikacji i infrastruktury. Za pomocą Azure DevOps i Resource Manager szablonu 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 programu VS z potokami i Samouczek: ciągła integracja szablonów Azure Resource Manager za pomocą Azure Pipelines.

  • Kod eksportowalny: 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 dla określonego wdrożenia. Przeglądając wyeksportowany szablon, można poznać jego składnię.

  • Narzędzia do tworzenia: za pomocą Visual Studio Code szablonów i rozszerzenia narzędzia szablonu. Funkcja 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ć Visual Studio .

Plik szablonu

W szablonie można pisać wyrażenia szablonów, które rozszerzają możliwości danych JSON. Te wyrażenia korzystają z funkcji dostarczanych przez Resource Manager.

Szablon zawiera następujące sekcje:

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

  • Zmienne — zdefiniuj wartości, które są ponownie używane w szablonach. Można je utworzyć na pomocą wartości parametrów.

  • Funkcje zdefiniowane przez użytkownika — twórz dostosowane funkcje, które upraszczają szablon.

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

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

Template deployment procesu

Podczas wdrażania szablonu Resource Manager 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 wartość apiVersion ustawiona w szablonie zasobu jest używana jako wersja interfejsu API dla operacji REST. Szablon można wdrażać wielokrotnie i mieć pewność, że będzie on nadal działać. Korzystając z tej samej wersji interfejsu API, nie musisz martwić się o istotne zmiany, 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 umożliwia zarządzanie 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