Bereitstellen eines Azure Logic Apps-Workflows mithilfe einer Azure Resource Manager-Vorlage

Abgeschlossen

Wenn Sie Azure schon eine Weile verwenden, haben Sie bestimmt vom Azure Resource Manager gehört. Lassen Sie uns die Rolle von Resource Manager näher betrachten und definieren, was eine Resource Manager-Vorlage ausmacht.

Was ist Azure Resource Manager?

Auf der Benutzeroberfläche von Azure Resource Manager werden Cloudressourcen verwaltet und organisiert. Stellen Sie sich Resource Manager als eine Möglichkeit zum Bereitstellen von Azure-Ressourcen vor.

Wenn Sie mit Azure-Ressourcengruppen vertraut sind, wissen Sie, dass sie mit diesen zusammengehörige Ressourcen als Einheit behandeln können. Resource Manager dient zum Organisieren der Ressourcengruppen, mit denen Sie alle Ressourcen zusammen in einer einzigen Aktion bereitstellen, verwalten und löschen können.

Denken Sie an die Finanzmodelle, die Sie für Ihre Analysten ausführen. Um ein Modell auszuführen, benötigen Sie möglicherweise eine oder mehrere Virtual Machines (VMs), eine Datenbank zum Speichern von Daten und ein virtuelles Netzwerk, um alles miteinander verbinden zu können. Mithilfe von Resource Manager können Sie diese Ressourcen in derselben Ressourcengruppe bereitstellen und verwalten sowie gemeinsam überwachen. Wenn Sie fertig sind, können Sie alle Ressourcen einer Ressourcengruppe in einem Schritt löschen.

Was sind Resource Manager-Vorlagen?

Eine Resource Manager-Vorlage definiert detailliert sämtliche Resource Manager-Ressourcen in einer Bereitstellung. Sie können eine Resource Manager-Vorlage in einem Arbeitsgang in einer Ressourcengruppe bereitstellen.

Eine Resource Manager-Vorlage ist eine JSON-Datei, also eine Form der deklarativen Automatisierung. Deklarative Automatisierung bedeutet, dass Sie definieren, welche Ressourcen Sie benötigen, aber nicht, wie sie erstellt werden. Anders ausgedrückt: Sie definieren, was Sie benötigen, und Resource Manager ist dafür verantwortlich sicherzustellen, dass die Ressourcen ordnungsgemäß bereitgestellt werden.

Sie können sich die deklarative Automatisierung ähnlich wie die Anzeige von HTML-Dateien in Webbrowsern vorstellen. Die HTML-Datei beschreibt, welche Elemente auf der Seite zu sehen sind, beschreibt aber nicht, wie sie angezeigt werden sollen. Für das „wie“ ist der Webbrowser zuständig.

Hinweis

Resource Manager-Vorlagen werden möglicherweise auch als ARM-Vorlagen bezeichnet. Wir bevorzugen die vollständigen Namen Azure Resource Manager-Vorlagen oder Resource Manager-Vorlagen.

Gründe für das Verwenden von Resource Manager-Vorlagen

Durch die Verwendung von Resource Manager-Vorlagen erfolgen Ihre Bereitstellungen schneller und können leichter wiederholt werden. Beispielsweise müssen Sie keine VM mehr im Portal erstellen, darauf warten, dass sie fertig ist, dann die nächste VM erstellen usw. Resource Manager kümmert sich für Sie um die gesamte Bereitstellung.

Im folgenden sind einige weitere Vorteile aufgeführt:

  • Vorlagen sorgen für mehr Konsistenz:

    Resource Manager-Vorlagen bieten Ihnen und anderen eine gemeinsame Sprache zur Beschreibung Ihrer Bereitstellungen. Unabhängig vom Tool oder SDK, mit dem die Vorlage bereitgestellt wird, bleiben Struktur, Format und Ausdrücke innerhalb der Vorlage unverändert.

  • Vorlagen helfen beim Umsetzen komplexer Bereitstellungen:

    Vorlagen ermöglichen die Bereitstellung mehrerer Ressourcen in der richtigen Reihenfolge. Beispielsweise möchten Sie keinen virtuellen Computer bereitstellen, bevor Sie einen Betriebssystem-Datenträger oder eine Netzwerkschnittstelle erstellen. Resource Manager ordnet jede Ressource und ihre abhängigen Ressourcen zu und erstellt zuerst abhängige Ressourcen. Die Zuordnung von Abhängigkeiten hilft sicherzustellen, dass die Bereitstellung in der richtigen Reihenfolge stattfindet.

  • Vorlagen reduzieren manuelle, fehleranfällige Aufgaben:

    Das manuelle Erstellen und Verbinden von Ressourcen kann zeitaufwendig sein, wobei Fehler nicht selten auftreten. Resource Manager stellt sicher, dass Bereitstellungen jedes Mal auf die gleiche Weise erfolgen.

  • Vorlagen bestehen aus Code:

    In Vorlagen werden Ihre Anforderungen als Code ausgedrückt. Stellen Sie sich eine Vorlage als eine Art Infrastruktur als Code vor, die Sie wie jede andere Software gemeinsam nutzen, testen und mit Versionsangaben versehen können. Da Vorlagen aus Code bestehen, können Sie auch eine „Begleitdokumentation“ erstellen, der Sie folgen können. Im Vorlagencode wird die Bereitstellung dokumentiert. Die meisten Benutzer verwalten ihre Vorlagen mithilfe einer Versionskontrolle, wie z. B. Git. Wenn Sie die Vorlage ändern, wird in der Versionsgeschichte auch dokumentiert, wie sich die Vorlage (und Ihre Bereitstellung) im Laufe der Zeit weiterentwickelt hat.

  • Vorlagen fördern die Wiederverwendung:

    Ihre Vorlage kann Parameter enthalten, die beim Ausführen der Vorlage ausgefüllt werden. Ein Parameter kann einen Benutzernamen oder ein Kennwort, einen Domänennamen usw. definieren. Mit den Vorlagenparametern können Sie mehrere Versionen Ihrer Infrastruktur erstellen, z. B. Staging und Produktion, aber trotzdem genau die gleiche Vorlage verwenden.

  • Vorlagen sind verknüpfbar:

    Sie können Resource Manager-Vorlagen miteinander verknüpfen, um die Vorlagen selbst modular zu gestalten. Sie können kleinere Vorlagen schreiben, die jeweils einen Teil einer Lösung definieren und diese dann zu einem Gesamtsystem kombinieren.

Die Modelle, die Ihre Finanzanalysten ausführen, sind individuell, aber Sie können Muster in der zugrunde liegenden Infrastruktur beobachten. Beispielsweise benötigen die meisten Modelle eine Datenbank, um Daten zu speichern. Viele Modelle verwenden die gleichen Programmiersprachen, Frameworks und Betriebssysteme, um die Details zu realisieren. Sie können Vorlagen definieren, die jede einzelne Komponente beschreiben, z. B. Compute, Speicher und Netzwerk. Anschließend können Sie die Komponenten kombinieren, um die spezifischen Anforderungen der einzelnen Analyst*innen zu erfüllen.

Was ist in einer Resource Manager-Vorlage enthalten?

Hinweis

Hier sehen Sie einige Codebeispiele, die Ihnen einen Eindruck davon vermitteln, wie die einzelnen Abschnitte strukturiert sind. Keine Sorge, wenn Ihnen das, was Sie sehen, unbekannt ist. Sie können die Vorlagen anderer lesen und Ihre eigenen schreiben, während Sie praktische Erfahrungen damit sammeln.

Möglicherweise haben Sie bereits JSON (JavaScript Object Notation) verwendet, um Daten zwischen Servern und Webanwendungen zu übertragen. JSON ist auch eine beliebte Möglichkeit, die Konfiguration von Anwendungen und Infrastrukturen zu beschreiben.

JSON ermöglicht, gespeicherte Daten als Objekt (z. B. als VM) in Textform auszudrücken. Ein JSON-Dokument ist im Wesentlichen eine Sammlung von Schlüssel-Wert-Paaren. Jeder Schlüssel ist eine Zeichenfolge. Der Schlüsselwert kann eine Zeichenfolge, eine Zahl, ein boolescher Ausdruck, eine Liste von Werten oder ein Objekt (eine Sammlung anderer Schlüssel-Wert-Paare) sein.

Eine Resource Manager-Vorlage kann die folgenden Abschnitte enthalten:

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

Obwohl diese Abschnitte in JSON ausgedrückt werden, stehen sie nicht mit der eigentlichen JSON-Sprache in Verbindung. Im Folgenden werden die einzelnen Abschnitte ausführlich erläutert.

Parameter

In diesem Abschnitt legen Sie fest, welche Werte beim Ausführen der Vorlage konfigurierbar sind. Sie können beispielsweise Benutzern Ihrer Vorlage erlauben, einen Benutzernamen, ein Kennwort oder einen Domänennamen anzugeben.

Es folgt ein Beispiel, das zwei Parameter veranschaulicht: einen für den Benutzernamen einer VM und einen für das Kennwort.

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

Variables

In diesem Abschnitt definieren Sie Werte, die in der gesamten Vorlage verwendet werden. Variablen erleichtern die Pflege Ihrer Vorlagen. Beispielsweise können Sie einen Namen für ein Speicherkonto einmalig als Variable definieren und diese Variable in der gesamten Vorlage verwenden. Wenn sich der Name des Speicherkontos ändert, müssen Sie nur die Variable aktualisieren.

Es folgt ein Beispiel, das einige Variablen veranschaulicht, die Netzwerkfunktionen einer VM beschreiben.

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

Funktionen

In diesem Abschnitt definieren Sie Prozeduren, die nicht in der gesamten Vorlage wiederholt werden sollen. Ähnlich wie Variablen erleichtern Funktionen die Pflege Ihrer Vorlagen. Nachfolgend ein Beispiel, das eine Funktion zum Erzeugen eines eindeutigen Namens erstellt, die beim Anlegen von Ressourcen mit Anforderungen einer global eindeutigen Benennung verwendet werden kann.

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

Ressourcen

In diesem Abschnitt definieren Sie die Azure-Ressourcen, aus denen Ihre Bereitstellung besteht.

Hier ein Beispiel, wie eine öffentliche IP-Adresse erstellt wird.

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

Der Typ der Ressource ist hier Microsoft.Network/publicIPAddresses. Ihr Name wird dem Abschnitt „Variablen“ und ihr Standort (oder die Azure-Region) dem Abschnitt „Parameter“ entnommen.

Da sich Ressourcentypen im Laufe der Zeit ändern können, bezieht sich apiVersion auf die Version des Ressourcentyps, den Sie verwenden möchten. Wenn sich Ressourcentypen weiterentwickeln und ändern, können Sie Ihre Vorlagen so anpassen, dass sie mit den neuesten Features arbeiten, sobald Sie bereit sind.

Ausgaben

In diesem Abschnitt definieren Sie alle Informationen, die Sie erhalten möchten, wenn die Vorlage ausgeführt wird. Sie möchten beispielsweise die IP-Adresse oder den FQDN Ihrer VM abrufen, also Informationen, die Sie bis zur Ausführung der Bereitstellung nicht kennen.

Im folgenden Beispiel ist eine Ausgabe mit hostname bezeichnet. Der FQDN-Wert wird den Einstellungen der öffentlichen IP-Adresse der VM entnommen.

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

Bereitstellen eines Azure Logic Apps-Workflows in einer Vorlage

Bei einem Azure Logic Apps-Workflow handelt es sich um eine Ressource in Azure. Daher können wir diese in einer Vorlage bereitstellen, indem wir sie zur Liste bereitzustellender Ressourcen im Abschnitt resources der Resource Manager-Vorlage hinzufügen. Aber was genau muss dem Abschnitt „resources“ hinzugefügt werden, um den Workflow zu definieren? Die JSON-Workflowdefinition des gewünschten Workflows muss dem Abschnitt „resources“ hinzugefügt werden. Im folgenden JSON-Codeausschnitt wird eine Resource Manager-Vorlage zum Bereitstellen des grundlegenden Workflows veranschaulicht, der in der vorherigen Lerneinheit beschrieben wurde. Wie Sie im hervorgehobenen Abschnitt sehen, enthält der Abschnitt „resources“ die gesamte Workflowdefinition.

{
    "$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]"
        }
     }
}

Diese Vorlage kann mithilfe einer der folgenden Methoden bereitgestellt werden:

  • Bereitstellung über das Azure-Portal.
  • Bereitstellung mithilfe des PowerShell Az-Moduls.
  • Bereitstellung über die Azure CLI (Azure-Befehlszeilenschnittstelle)

In diesem Modul werden die Vorlage mithilfe der az deployment group-Befehle über die Azure CLI bereitgestellt.

Schreiben einer Resource Manager-Vorlage

Es gibt mehreren Möglichkeiten zum Schreiben von Resource Manager-Vorlagen. Obwohl Sie eine Vorlage von Grund auf neu schreiben können, ist es üblich, mit einer bestehenden Vorlage zu beginnen und sie an Ihre Anforderungen anzupassen.

Nachfolgend finden Sie einige Möglichkeiten für die Erstellung einer Einstiegsvorlage:

  • Verwenden Sie das Azure-Portal, um eine Vorlage basierend auf den Ressourcen einer bestehenden Ressourcengruppe zu erstellen.
  • Beginnen Sie mit einer Vorlage, die Sie oder Ihr Team erstellt haben und einem ähnlichen Zweck dient.
  • Beginnen Sie mit einer Azure-Schnellstartvorlage; In der nächsten Einheit wird gezeigt, wie das geht.

Unabhängig von Ihrem Ansatz erfordert das Schreiben einer Vorlage das Arbeiten mit einem Text-Editor. Sie können zwar Ihren bevorzugten Editor einsetzen, aber die Erweiterung Azure Resource Manager-Tools für Visual Studio Code ist speziell für das Erstellen von Vorlagen konzipiert. Diese Erweiterung erleichtert die Navigation durch Ihren Vorlagencode und bietet für viele gängige Aufgaben eine automatische Vervollständigung.

Während Sie Ihre Vorlagen durchgehen und schreiben, sollten Sie auf die Dokumentation zurückgreifen, um zu verstehen, welche Ressourcentypen verfügbar sind und wie sie verwendet werden.

In der nächsten Lerneinheit untersuchen Sie eine vorhandene Vorlage und stellen sie über die Azure-Befehlszeilenschnittstelle bereit.