Wdrażanie przepływu pracy usługi Azure Logic Apps przy użyciu szablonu usługi Azure Resource Manager

Ukończone

Jeśli używasz platformy Azure od pewnego czasu, prawdopodobnie znasz usługę Azure Resource Manager. Sprawdzimy możliwości usługi Resource Manager i opiszemy zawartość szablonu usługi Resource Manager.

Co to jest usługa Azure Resource Manager?

Usługa Azure Resource Manager to interfejs umożliwiający organizowanie zasobów w chmurze i zarządzanie nimi. Jest to rozwiązanie służące do wdrażania zasobów w chmurze.

Jeśli znasz grupy zasobów platformy Azure, wiesz, że umożliwiają one traktowanie zestawów powiązanych zasobów jako pojedynczej jednostki. Usługa Resource Manager umożliwia organizowanie grup zasobów, które pozwalają na wdrażanie i usuwanie wszystkich zasobów oraz zarządzanie nimi w ramach jednej akcji.

Pomyśl o modelach finansowych uruchamianych dla analityków. Aby uruchomić model, może być konieczne użycie co najmniej jednej maszyny wirtualnej, bazy danych do przechowywania danych i sieci wirtualnej w celu umożliwienia łączności między wszystkimi elementami. Za pomocą usługi Resource Manager można wdrożyć te zasoby w tej samej grupie zasobów i zarządzać nimi i monitorować je razem. Po zakończeniu można usunąć wszystkie zasoby z grupy zasobów w ramach jednej operacji.

Co to są szablony usługi Resource Manager?

Szablon usługi Resource Manager dokładnie definiuje wszystkie zasoby usługi Resource Manager we wdrożeniu. Szablon usługi Resource Manager można wdrożyć w grupie zasobów w ramach jednej operacji.

Szablon usługi Resource Manager jest plikiem JSON, dzięki czemu szablon jest formą automatyzacji deklaratywnej. Automatyzacja deklaratywna oznacza, że definiujesz potrzebne zasoby, ale nie sposób ich tworzenia. Innymi słowy, należy zdefiniować potrzebne elementy, ale usługa Resource Manager musi upewnić się, że zasoby są prawidłowo wdrażane.

Automatyzacja deklaratywna przypomina sposób wyświetlania plików HTML w przeglądarkach internetowych. Plik HTML zawiera opis tego, które elementy są wyświetlane na stronie, ale nie zawiera opisu tego, jak mają być wyświetlane. Za sposób wyświetlania odpowiada przeglądarka internetowa.

Uwaga

Możesz usłyszeć szablony usługi Resource Manager nazywane szablonami usługi ARM. Preferujemy pełne nazwy szablonów usługi Azure Resource Manager lub szablonów usługi Resource Manager.

Dlaczego warto korzystać z szablonów usługi Resource Manager?

Korzystanie z szablonów usługi Resource Manager sprawia, że wdrożenia są szybsze i bardziej powtarzalne. Na przykład nie musisz już tworzyć maszyny wirtualnej w portalu, czekać na zakończenie procesu, tworzyć następnej maszyny wirtualnej itd. Usługa Resource Manager wykonuje cały proces wdrożenia za Ciebie.

Oto niektóre inne korzyści, które warto wziąć pod uwagę:

  • Szablony zwiększają spójność.

    Szablony usługi Resource Manager udostępniają wspólny język dla Ciebie i innych osób do opisywania wdrożeń. Niezależnie od narzędzia lub zestawu SDK użytego do wdrożenia szablonu struktura, format i wyrażenia w szablonie pozostają bez zmian.

  • Szablony ułatwiają wyrażanie złożonych wdrożeń.

    Szablony umożliwiają wdrażanie wielu zasobów w poprawnej kolejności. Na przykład nie należy wdrażać maszyny wirtualnej przed utworzeniem dysku systemu operacyjnego lub interfejsu sieciowego. Usługa Resource Manager mapuje każdy zasób i jego zasoby zależne oraz tworzy zasoby zależne. Mapowanie zależności pomaga zagwarantować, że wdrożenie odbywa się w odpowiedniej kolejności.

  • Szablony zmniejszają liczbę zadań ręcznych, podatnych na błędy.

    Ręczne tworzenie i łączenie zasobów może być czasochłonne oraz można w jego trakcie łatwo popełnić błędy. Usługa Resource Manager zapewnia, że wdrożenia są wykonywane tak samo za każdym razem.

  • Szablony to kod.

    Szablony umożliwiają przedstawianie wymagań za pomocą kodu. Szablon można traktować jako typ infrastruktury jako kod , który można udostępniać, testować i wersję jak każdy inny element oprogramowania. Ponadto dzięki temu można utworzyć dokumentację, którą można śledzić. Kod szablonu dokumentuje wdrożenie. Większość użytkowników utrzymuje swoje szablony w ramach pewnego rodzaju kontroli wersji, takiej jak Git. Kiedy zmienisz szablon, jego historia wersji również będzie zawierać informacje o zmianach szablonu (i wdrożenia) w czasie.

  • Szablony promują ponowne użycie.

    Szablon może zawierać parametry wypełniane po jego uruchomieniu. Parametr może definiować nazwę użytkownika lub hasło, nazwę domeny itp. Parametry szablonu umożliwiają tworzenie wielu wersji infrastruktury, takich jak przejściowe i produkcyjne, ale nadal korzystają z tego samego szablonu.

  • Szablony można łączyć.

    Szablony usługi Resource Manager można połączyć ze sobą, aby same szablony mogły być modułowe. Można pisać małe szablony, z których każdy definiuje część rozwiązania, i łączyć je w celu utworzenia pełnego systemu.

Modele używane przez analityków finansowych są unikatowe, ale w podstawowej infrastrukturze można zauważyć wzorce. Na przykład większość modeli wymaga bazy danych do przechowywania danych. Wiele modeli wykonuje szczegółowe operacje przy użyciu tych samych języków programowania, platform i systemów operacyjnych. Można zdefiniować szablony opisujące poszczególne składniki, takie jak obliczenia, magazyn i sieć. Następnie można połączyć składniki w celu spełnienia określonych potrzeb każdego analityka.

Co zawiera szablon usługi Resource Manager?

Uwaga

W tym miejscu zobaczysz kilka przykładów kodu, aby zrozumieć strukturę każdej sekcji. Nie martw się, jeśli to, co widzisz, jest dla Ciebie nieznane. Możesz przejrzeć szablony innych osób i napisać własne, gdy zyskasz więcej praktycznego doświadczenia.

Przed wysłaniem danych między serwerami i aplikacjami internetowymi może być używana funkcja JavaScript Object Notation (JSON). Format JSON jest również popularnym rozwiązaniem umożliwiającym opisywanie konfiguracji aplikacji i infrastruktury.

Format JSON umożliwia wyrażanie danych przechowywanych jako obiekt, takich jak maszyna wirtualna, w tekście. Dokument JSON to zasadniczo zbiór par klucz-wartość. Każdy klucz jest ciągiem. Wartość klucza może być ciągiem, liczbą, wyrażeniem logicznym, listą wartości lub obiektem, który jest kolekcją innych par klucz-wartość.

Szablon usługi Resource Manager może zawierać następujące sekcje:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "",
    "parameters": {  },
    "variables": {  },
    "functions": [  ],
    "resources": [  ],
    "outputs": {  }
}

Chociaż te sekcje są wyrażane przy użyciu formatu JSON, nie są one powiązane z rzeczywistym językiem JSON. Przyjrzyjmy się dokładniej każdej sekcji.

Parametry

W tej sekcji określasz, które wartości można konfigurować podczas uruchamiania szablonu. Możesz na przykład zezwolić użytkownikom szablonu na określenie nazwy użytkownika, hasła lub nazwy domeny.

Oto przykład ilustrujący dwa parametry: jeden dla nazwy użytkownika maszyny wirtualnej i jeden dla jego hasła.

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "Username for the Virtual Machine."
    }
  },
  "adminPassword": {
    "type": "securestring",
    "metadata": {
      "description": "Password for the Virtual Machine."
    }
  }
}

Zmienne

W tej sekcji definiujesz wartości używane w całym szablonie. Zmienne ułatwiają obsługę szablonów. Można na przykład raz zdefiniować nazwę konta magazynu jako zmienną i używać tej zmiennej w całym szablonie. W przypadku zmiany nazwy konta magazynu wystarczy zaktualizować tylko zmienną.

Oto przykład kilku zmiennych, które opisują funkcje sieci maszyny wirtualnej.

"variables": {
  "nicName": "myVMNic",
  "addressPrefix": "10.0.0.0/16",
  "subnetName": "Subnet",
  "subnetPrefix": "10.0.0.0/24",
  "publicIPAddressName": "myPublicIP",
  "virtualNetworkName": "MyVNET"
}

Funkcje

W tej sekcji zdefiniujesz procedury, których nie chcesz powtarzać w całym szablonie. Funkcje (tak jak zmienne) ułatwiają obsługę szablonów. Poniżej przedstawiono przykład utworzenia funkcji umożliwiającej utworzenie unikatowej nazwy, której można używać podczas tworzenia zasobów z globalnie unikatowymi wymaganiami w zakresie nazw.

"functions": [
  {
    "namespace": "contoso",
    "members": {
      "uniqueName": {
        "parameters": [
          {
            "name": "namePrefix",
            "type": "string"
          }
        ],
        "output": {
          "type": "string",
          "value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
        }
      }
    }
  }
],

Zasoby

W tej sekcji można zdefiniować zasoby platformy Azure zawarte we wdrożeniu.

Oto przykład, w którym utworzono zasób publicznego adresu IP.

{
  "type": "Microsoft.Network/publicIPAddresses",
  "name": "[variables('publicIPAddressName')]",
  "location": "[parameters('location')]",
  "apiVersion": "2018-08-01",
  "properties": {
    "publicIPAllocationMethod": "Dynamic",
    "dnsSettings": {
      "domainNameLabel": "[parameters('dnsLabelPrefix')]"
    }
  }
}

Typ zasobu w tym przykładzie to Microsoft.Network/publicIPAddresses. Jego nazwa jest odczytywana z sekcji zmiennych, a jej lokalizacja (lub region świadczenia usługi Azure) jest odczytywana z sekcji parametrów.

Typy zasobów mogą zmieniać się wraz z upływem czasu, dlatego element apiVersion odnosi się do wersji typu zasobu, którego chcesz użyć. Wraz z rozwojem i zmianami typów zasobów możesz zmodyfikować szablony, aby współdziałały z najnowszymi funkcjami, gdy wszystko będzie gotowe.

Dane wyjściowe

W tej sekcji zdefiniujesz wszelkie informacje, które mają być odbierane po uruchomieniu szablonu. Na przykład możesz chcieć otrzymać adres IP maszyny wirtualnej lub nazwę FQDN, czyli informacje, które nie są znane, dopóki wdrożenie nie zostanie uruchomione.

W poniższym przykładzie przedstawiono dane wyjściowe o nazwie hostname. Wartość nazwy FQDN jest odczytywana z ustawień publicznego adresu IP maszyny wirtualnej.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]"
  }
}

Jak mogę wdrożyć przepływ pracy usługi Azure Logic Apps w szablonie?

Przepływ pracy usługi Azure Logic Apps to zasób na platformie Azure. W związku z tym możemy wdrożyć go w szablonie, dodając go do listy zasobów do wdrożenia w resources sekcji szablonu usługi Resource Manager. Co dokładnie dodajemy do sekcji zasobów, aby zdefiniować przepływ pracy? Do sekcji zasobów dodajemy definicję przepływu pracy w formacie JSON dla odpowiedniego przepływu pracy. Poniższy fragment kodu JSON pokazuje szablon usługi Resource Manager służący do wdrożenia podstawowego przepływu pracy, który opisaliśmy w poprzedniej lekcji. Jak widać w wyróżnionym fragmencie, sekcja zasobów zawiera kompletną definicję przepływu pracy.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Logic/workflows",
            "apiVersion": "2017-07-01",
            "name": "HelloLogicAppsTemplate",
            "location": "westus2",
            "properties": {
                "state": "Enabled",
                "definition": {
                    "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {},
                    "triggers": {
                        "manual": {
                            "type": "Request",
                            "kind": "Http",
                            "inputs": {
                                "method": "GET",
                                "schema": {}
                            }
                        }
                    },
                    "actions": {
                        "Response": {
                            "runAfter": {},
                            "type": "Response",
                            "kind": "Http",
                            "inputs": {
                                "body": "Hello Logic Apps Template!",
                                "statusCode": 200
                            }
                        }
                    },
                    "outputs": {}
                },
                "parameters": {}
            }
        }
    ],
    "outputs": {
        "logicAppUrl": {
           "type": "string",
           "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', 'HelloLogicAppsTemplate'), '/triggers/manual'), '2017-07-01').value]"
        }
     }
}

Możemy wdrożyć ten szablon przy użyciu jednej z następujących metod:

  • Wdrażanie przy użyciu witryny Azure Portal.
  • Wdrażanie przy użyciu modułu programu PowerShell Az .
  • Wdrażanie z poziomu interfejsu wiersza polecenia platformy Azure

W tym module wdrożymy szablony przy użyciu interfejsu wiersza polecenia platformy Azure i poleceń az deployment group.

Jak napisać szablon usługi Resource Manager?

Dostępnych jest wiele metod pisania szablonów usługi Resource Manager. Można napisać szablon od podstaw, jednak częstym rozwiązaniem jest użycie istniejącego szablonu i dostosowanie go do własnych potrzeb.

Oto kilka sposobów na uzyskanie szablonu początkowego:

  • Użyj witryny Azure Portal, aby utworzyć szablon na podstawie zasobów w istniejącej grupie zasobów.
  • Zacznij od utworzonego przez Ciebie lub Twój zespół szablonu, który służy do podobnego celu.
  • Rozpocznij od szablonu Szybkiego startu platformy Azure; Zobaczysz, jak to zrobić w następnej lekcji.

Niezależnie od wybranej metody pisanie szablonu wiąże się z pracą w edytorze tekstów. Możesz użyć ulubionego edytora, ale rozszerzenie Azure Resource Manager Tools programu Visual Studio Code jest specjalnie zaprojektowane do tworzenia szablonów. To rozszerzenie ułatwia nawigowanie w kodzie szablonu i umożliwia automatyczne uzupełnianie w przypadku wielu typowych zadań.

Podczas eksplorowania i pisania szablonów zapoznaj się z dokumentacją, aby poznać dostępne typy zasobów i jak ich używać.

W następnej lekcji zbadamy i wdrożymy istniejący szablon z poziomu interfejsu wiersza polecenia platformy Azure.