Der Azure Deployment Manager befindet sich gerade in einer Preview-Phase. Ein Blick lohnt sich aber trotzdem. Er erlaubt nämlich einen sogenannten „staged rollout“ von ARM (Azure Resource Manager) Ressourcen über mehrere Regionen hinweg. Es handelt sich dabei um ein komplett kostenloses Feature des Azure Resource Managers.

Exkurs: Azure Resource Manager

In Azure existiert für die meisten Services ein Template, über das die Eigenschaften des Service festgelegt sind. Zur Veranschaulichung findet sich in folgendem Bild ein kurzes Beispiel. Zu sehen ist das Template eines Azure Storage Accounts. Hier werden Eigenschaften wie Name, Region und Tier festgelegt.

ARM Template für einen Storage Account

Es ist nun möglich Templates zu konfigurieren und mit deren Hilfe (beispielsweise über Azure DevOps Pipelines) ganze Infrastrukturumgebungen zu implementieren. Meist werden hierfür auch noch weitere Skripte (z.B. PowerShell) ausgeführt. Diese setzen beispielsweise Berechtigungen.

Woraus besteht ein Deployment im Allgemeinen?

Für ein Deployment gibt es grundsätzlich drei Fragen die vorher geklärt werden müssen.

  1. Wo sollen meine Dateien abgelegt werden? Also beispielsweise liegen die Binaries und Deployment Files in einem Repository wie Git.
  2. Wie soll die Toplogie aussehen? Sprich wie viele Ressourcen gibt es und in welchen Regionen sollen sie erstellt werden?
  3. In welcher Reihenfolge soll dies geschehen?

Der ADM

Um nun den ADM zu nutzen werden grundlegend 4 Dateien benötigt, welche vorzubereiten sind.

  • Topology Template
  • Rollout Template
  • Parameter File for Topology
  • Parameter File for Rollout

Folgend soll auf diese genauer eingegangen werden.

Das Topology Template

Das Topology Template beschreibt welche Ressourcen genutzt werden und in welcher Reihenfolge, sowie in welcher Region diese zu erstellen sind. Hier wird auch die sogenannte „Artifact Source“ referenziert (Artefakte sind dabei alle ARM Templates und Parameter Files des Deployments).

Eine Service Topologie beschreibt eine Gruppe von miteinander verzahnten Services. Jeder Service liegt in einer Region und gehört zu einer Subscription. Ein Service besteht aus sogenannten Service Units die sich in einer oder mehrerer Ressource Groups befinden. Zudem wird hier auch der Deployment Modus festgelegt. Im Kontext ist eine Service Unit beispielsweise sowas wie das Front End oder das Backend. Die Service Units setzen sich aus ARM Ressourcen zusammen, welche auf Deployment Files basieren.

Rollout Template

Über das Rollout Template wird die Reihenfolge bestimmt, mit der die Services und deren Abhängigkeiten zueinander deployed werden. Ein Rollout besteht wiederum aus Step Groups, welche die voraus- und nachgehenden Schritte (Steps) sowie das Deployment einer Service Unit beinhalten. Steps sind hierbei wiederverwendbare Aktionen die konfiguriert werden können. Als Beispiel sind nachfolgend einige aufgelistet.

  • Wait: Abwarten einer gewissen Zeit
  • Health Check: Prüfe den Zustand des Services und erst, wenn eine definierte Voraussetzung erfüllt ist, fahre fort
  • Web Extension: Führe einen Webservice aus und erst, wenn dies erfolgreich war, fahre fort
  • Shell Extension: Führe ein Skript aus

Step Groups können parallel ausgeführt werden, solange sie nicht voneinander abhängig sind.

Parameter Files

Sowohl zum Deployen der Service Topologie als auch für das Rollout gibt es ein Parameter File. In diesem sind alle wichtigen Definitionen und die Quellen angegeben. Hier müssen einige Variablen gesetzt werden.

Verfügbarkeit

Da sich der Service in einer Preview befindet werden derzeit nur die Azure Regionen Central US und East US 2 unterstützt.