Udostępnij za pośrednictwem


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. W miarę jak 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 pośrednictwem ujednoliconego procesu.

Aby sprostać tym wyzwaniom, zautomatyzuj wdrożenia i użyj praktyki infrastruktury jako kodu. W kodzie zdefiniujesz infrastrukturę, która musi zostać wdrożona. Kod infrastruktury jest częścią projektu. Podobnie jak kod aplikacji, zapisz kod infrastruktury w repozytorium źródłowym i w 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. Możesz również określić, w której grupie zasobów są wdrażane te zasoby.

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?.

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 wdrażać nie tylko maszyny wirtualne, ale także infrastrukturę sieci, 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 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. Na przykład poniższy plik tworzy konto magazynu. Jeśli ten szablon zostanie wdrożony i konto magazynu z określonymi właściwościami już istnieje, nie zostaną wprowadzone żadne zmiany.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": {
    "mystore": {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2023-04-01",
      "name": "mystorageaccount",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2"
    }
  }
}
  • 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, dzięki czemu wdrożenia zakończą 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. Możesz dołączyć skrypt do szablonu lub zapisać go w źródle zewnętrznym i odwołać się do niego w szablonie. Za pomocą skryptów wdrażania możesz ukończyć kompleksową konfigurację środowiska w jednym szablonie usługi ARM.

  • Testowanie: aby upewnić się, że szablon jest zgodny z zalecanymi wytycznymi, przetestuj 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: użyj operacji analizy co-jeżeli, aby wyświetlić podgląd zmian przed wdrożeniem szablonu. W przypadku analizy co-jeżeli zobaczysz, które zasoby mają zostać utworzone, zaktualizowane lub usunięte oraz jakiekolwiek właściwości zasobów do zmiany. 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 się powiedzie. 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żesz zintegrować szablony z narzędziami ciągłej integracji i ciągłego wdrażania (CI/CD). Ta integracja automatyzuje potoki wydań pod kątem 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. Uzyskasz 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 zapewnianych przez usługę Resource Manager.

Szablon zawiera następujące sekcje:

  • Parametry — podaj wartości podczas wdrażania, które można dostosować dla różnych środowisk podczas korzystania z tego samego szablonu.

  • Zmienne — zdefiniuj ponownie używane wartości w szablonach. Można je skonstruować 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ę na następującą operację interfejsu API REST, która jest wysył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 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

Zdefiniuj szablony i grupy zasobów na podstawie sposobu zarządzania rozwiązaniem. Możesz na przykład wdrożyć aplikację trójwarstwową za pomocą jednego szablonu w jednej grupie zasobów.

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

Nie trzeba 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ć określone rozwiązanie, utwórz 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 zawierającego 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. Zasoby mogą być nadal połączone 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. Użyj kontroli dostępu opartej na rolach, aby zarządzać 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.

Uzyskiwanie pomocy technicznej

Poniżej przedstawiono kroki otwierania biletu pomocy technicznej dla problemów związanych z szablonem usługi Azure Resource Manager (ARM):

  1. Otwórz portal Azure Portal.

  2. Wybierz ikonę Pomoc techniczna i rozwiązywanie problemów w prawym górnym rogu.

  3. W obszarze Krótko opisz problem, wprowadź szablon usługi ARM, a następnie wybierz pozycję Przejdź.

  4. W której usłudze występuje problem? wybierz pozycję Portal w obszarze Monitorowanie i zarządzanie, a następnie wybierz pozycję Dalej.

  5. Wybierz subskrypcję, a następnie wybierz pozycję Dalej.

  6. Wybierz pozycję Problem z szablonami usługi ARM, a następnie wybierz pozycję Dalej.

    Zrzut ekranu przedstawiający żądanie obsługi szablonu usługi ARM.

Następne kroki