Cloud-Deployments mit Vorlagen für Azure Resource Manager (ARM) konfigurieren


    Tags: ,

    Azure Resource GroupDer Azure Resource Manager ist der Dreh- und Angel­punkt von Azure. Er stellt Ressourcen bereit und ver­waltet sie. ARM setzt alle Auf­träge um, welche über die ver­schieden Tools (Portal-GUI, Power­Shell, etc.) er­zeugt werden. Mit Hilfe von Temp­lates lassen sich auch kom­plexe Deploy­ments schnell und einfach realisieren.

    Ressourcen, die ARM verwaltet, stehen in der Azure-Hierarchie auf der untersten Ebene. Zuerst kommen Management Groups, dann Subscriptions, darunter Resource Groups und innerhalb dieser dann die einzelnen Ressourcen.

    Anordnung der Ressourcen in Azure

    ARM kann Ressourcen erstellen, anpassen oder löschen. Zu diesem Zweck kommen unter­schiedliche Resource Provider zum Einsatz. Jeder Ressourcentyp hat seinen entsprechenden Provider, sei es eine VM, ein vNet, DataStore oder eine WebApp.

    Der Azure Resource Manager nimmt Aufträge über verschiedene Interfaces entgegen

    Infrastructure as Code (IaC)

    In der Vergangenheit wurden Infrastrukturen meist imperativ angelegt, mithin gab es immer einen definierten Ablauf bei der Bereitstellung. Dieser bestand aus einer logischen Abfolge an Schritten. Zuerst mussten Storage und Netzwerk zur Verfügung gestellt werden, im Anschluss VMs und andere Ressourcen.

    PowerShell erwies sich bei dieser Methode als mächtiges Werkzeug und erfreut sich daher großer Beliebtheit. Scripts haben jedoch den Nachteil, dass sie schnell sehr komplex werden und regel­mäßige Pflege erfordern.

    Bei IaC wird dagegen die Ziel­umgebung deklariert. Die Deklaration kann die ganze Infrastruktur umfassen, einen Teilbereich oder eine einzelne Ressource. ARM nutzt für das Deployment eine Definition in Form einer JSON-Datei (JavaScript Object Notation).


    Diesen Beitrag als Podcast anhören


    Was sind ARM-Templates und wie erstellt man sie?

    ARM-Vorlagen sind mithin JSON-Dateien, die Ressourcen-Deklarationen enthalten. Sie können in jedem Coding-Tool oder Editor erzeugt werden, welches JSON unterstützt. Beliebt ist dafür etwa Visual Studio Code (VSCode). Es handelt sich dabei um eine kostenlose Entwicklungs­umgebung, die sich mit unzähligen Plugins erweitern lässt.

    Darüber hinaus bietet Microsoft Quickstart-Templates im GitHub Repository an. Alternativ können Vorlagen auch über die Webseite Azure Quickstart Templates herunter­geladen werden. Beide Quellen zusammen enthalten über 1.000 kostenloser ARM-Vorlagen.

    Ihre Bandbreite ist enorm und reicht von einfachen Applikationen, Datenbanken (auch Fremd­anbieter), DNS, Netzwerk­komponenten bis hin zu kompletten Infrastrukturen. So gibt es beispielsweise Templates für ein vollständiges und redundantes RDS Deployment.

    Nachdem man das Template angepasst hat, kann man es in ARM hochladen, und innerhalb von wenigen Minuten ist eine ganze RDS-Umgebung einsatzbereit.

    Templates aus bestehenden Deployments erstellen

    Wenn über die unter­schiedlichen Wege (Portal, Shell oder REST-API) eine Ressource angelegt wurde, dann kann man dieses Deployment im Azure Portal in der jeweiligen Ressource oder Ressource-Gruppe im Blade Deployments bzw. Bereitstellungen anzeigen.

    Die Konfiguration existierender Bereitstellungen kann als Vorlage geöffnet werden.

    Dieses enthält die konfigurierten Einstellungen und vorgenommenen Eingaben. Sie lassen sich als Template direkt herunterladen oder in der Web-Oberfläche öffnen und bearbeiten.

    Die Einstellungen eines Deployments liegen im JSON-Format vor.

    Es besteht auch die Möglichkeit, die Vorlage beim Erstellen einer Ressource im Review-Bereich herunter­zuladen. Dazu klickt man auf den Link Download a template for automation bzw. Vorlage zur Automatisierung herunterladen. Damit lassen sich künftig Ressourcen erstellen.

    Beim Erstellen einer neuen Ressource über das Portal kann man die Einstellungen als Vorlage herunterladen.

    Im Azure-Portal selbst kann man ebenfalls Templates erstellen. Dazu sucht man nach Custom oder Template Deployment und wählt den Eintrag für den Editor aus dem Marketplace. Damit lässt sich ein Template komplett ohne Coding-Kenntnisse erstellen und direkt anwenden.

    Template Deployment vom Azure Marketplace laden

    Aufbau der ARM-Templates

    Das JSON-File ist nach einem vorgegeben Schema aufgebaut. Es gibt eine Content-Versionierung, die mit 1.0.0.0 beginnt. In dem zuständigen Bereich können Parameter gesetzt werden, zum Beispiel durch Eingaben. Funktionen und Variablen lassen sich ebenfalls im Template nutzen.

    Im Bereich Ressourcen werden der Typ und der entsprechende Provider angegeben. Es empfiehlt sich eine aktuelle ApiVersion zu verwenden, da der Provider im Laufe der Zeit weitere Funktionen anbietet.

    Weitere Informationen zu den einzelnen Providern stellt Microsoft unter folgender Seite bereit. Dort kann man nach der gewünschten Ressource suchen. Der entsprechenden Provider wird inklusive der unterstützten Funktionen detailliert beschrieben.

    Microsoft Docs enthält eine Beschreibung der verschiedenen Resource Provider

    Visualisierung mit VSCode

    Mit der Erweiterung ARM Templates Viewer können die Vorlagen in VSCode visualisiert werden. Dazu muss man lediglich das JSON-File in VSCode öffnen und der Template Viewer startet dann automatisch. In wenigen Sekunden ist damit eine grafische Repräsentation erstellt.

    Visualisierung der in Vorlagen definierten Ressourcen

    Fazit

    Die Vorteile der ARM Templates liegen vor allem in der deklarativen Syntax. Damit können Anwender prozedurale, Script-basierte Methoden vermeiden, die eine wesentlich höheren Aufwand erfordern und weniger flexibel sind.

    Die Konfiguration bestehender Ressourcen, die über solche traditionellen Verfahren eingerichtet wurden, lässt sich als Vorlage exportieren, um künftige Deployments zu beschleunigen.

    Die wichtigsten Vorzüge der ARM-Templates sind:

    • Das Template ist gleichzeitig Dokumentation
    • Der Ansatz der Deklaration spart Zeit, vermeidet Fehler und komplexe Abläufe
    • Inkrementelles Deployment. Wird das Template mit Änderungen neu geladen, führt ARM nur die Änderungen aus.
    • Nachvollziehbarkeit
    • Skalierung
    • Vereinfachte Zusammenarbeit und Übersichtlichkeit durch einheitlichen Sprachstandard
    • Wiederholbarer, konsistenter Vorgang

    Weitere Informationen gibt es bei Microsoft Docs.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Benjamin Bürk

    Benjamin Bürk ist Senior Systems Engineer und betreut seit 2002 IT-Infrastrukturen von Unternehmen. Sein Schwerpunkt liegt im Aufbau und Betrieb von Server-Systemen und Microsoft 365-Umgebungen. Er ist ITIL4 Foundation, dreifach als MCSA sowie als MCSE Productivity zertifiziert..
    // E-Mail, LinkedIn, Podcast //

    Verwandte Beiträge

    Weitere Links