ARM Template Deployment – Hub and Spoke mit Bastion

Mit einem Azure Resource Manager (ARM) Template kannst du per Knopfdruck eine bestimmte Infrastruktur auf Azure erstellen. Das Template definiert die Infrastruktur als Code und Azure wird dadurch der Sollzustand der Ressourcen mitgeteilt. Ein solches Template habe ich erstellt und über Github veröffentlicht. Das ARM Template Deployment beinhaltet eine Hub and Spoke Netzwerktopologie mit einer zentralen Azure Bastion für den sicheren Zugriff auf VMs. Dieser Beitrag zeigt dir Schritt für Schritt, wie du das Template für dich nutzen kannst.

Hinweis: Alternativ zur Schritt-für-Schritt Anleitung kannst du dir auch folgendes Video anschauen.

Tutorial on how to create a hub and spoke network with peered vnets and Azure Bastion with ease by Yannic Graber

Übersicht des Hub and Spoke mit Bastion ARM Template

Das Template erstellt drei Netzwerke. Das Hub– und zwei Spoke-Netzwerke.

Hub and Spoke with Bastion ARM template overview

Hub Netzwerk mit Bastion

Das Hub-Netzwerk bildet den Kern des Netzwerkes, welches mit zwei Subnetzen bestückt ist. Das eine Subnet bleibt vorerst leer und kann dir als DMZ dienen. Das andere Subnet beinhaltet die zentrale Azure Bastion, welche für den sicheren Zugriff auf all deine VMs verwendet wird. Beide Subnetze verfügen über eine eigene Network Security Group (NSG). Dadurch ist gewährleistet, dass du die Rule Base später ganz einfach und flexibel nach deinem Gusto anpassen kannst, ohne dass ein anderes Subnet davon betroffen ist.

Spoke Netzwerke

Das Template erstellt zwei Spoke-Netzwerke , in der Grafik zu sehen als Spoke-vnet-001 und Spoke-vnet-002. Beide Spokes beinhalte je ein einziges Subnet. Diese beiden Subnetze kannst du für deine Workloads verwenden, die du im jeweiligen Netzwerk platzieren möchtest. Auch bei den Spoke-Netzwerken erhält jedes Subnet ihre eigene NSG um möglichst flexibel bleiben zu können.

Netzwerk-Peering

Sobald alle drei Netzwerke erstellt sind, verbindet das ARM Template diese automatisch miteinander (sog. Netzwerk-Peering). Solch ein Peering findet immer zwischen zwei Netzwerken statt. Es handelt sich somit um eine 1-zu-1 Verbindung. Die beiden Spoke-Netzwerke werden in diesem Deployment mit dem Hub-Netzwerk verbunden, nicht aber die Spoke-Netzwerke untereinander. Das bedeutet, dass die Spoke-Netzwerke voneinander getrennt sind und sich gegenseitig nicht sehen können. Es handelt sich hier also um eine Art Sterntopologie. Falls du die Kommunikation zwischen den beiden Spoke-Netzwerken erlauben möchtest, kannst du dies später manuell per Routing mittels einer Network Virtual Appliance (NVA) einrichten.

ARM Template Deployment

Das von mir erstellte ARM Template findest du unter diesem Link auf Github zur freien Verfügung. Gerne darfst du das Template verwenden, egal ob für Tests oder Produktion. Bevor du dies tust, prüfe das Template aber gründlich. Jegliche Garantie ist meinerseits ausgeschlossen. Sei dir zudem bewusst, dass sich das Template seit der Veröffentlichung dieses Beitrags verändert haben kann. Du darfst das Template ohne weiteres klonen und nach deinem Belieben anpassen.

Navigiere als erstes zum Template auf Github. Du findest dort einen Button «Deploy to Azure» im Readme.md. Wähle diesen und logge dich mit deinem Azure Account ein. Das folgende ARM Template Formular erscheint. Die im PrintScreen gelb markierten Standardwerte musst du zwingend anpassen. Das ist absichtlich so, damit du dich mit der Namenskonvention auseinandersetzen musst. Alle anderen Werte musst du nicht zwingend verändern. Ich empfehle aber, dass du diese ebenfalls sorgfältig prüfst. In den Folgenden Subkapiteln beschreibe ich jeden Formularpunkt, was dieser beim Deployment bewirkt. Verwende beim Formular wenn möglich nur Kleinbuchstaben, um Fehler während des Deployments auszuschliessen.

Hub and Spoke with Bastion template form description

Region

Wähle die Region, in welcher du deine Ressourcengruppe erstellen möchtest. In diesem Beispiel «West Europe». Die gewählte Region solltest du unter Berücksichtigung deiner gewählten Namenskonvention auch bei den weiteren Parametern einbringen.

Environment Name

Hier kannst du den Namen deiner Umgebung definieren. Dieser Parameter wird nur für Namen gewisser Ressourcen verwendet, welche hier nicht per Parameter definiert werden können. Typische Namen beziehungsweise Abkürzungen für Umgebungen sind «demo», «test», «dev», «int» oder «prod». Achte darauf, dass du auch den gewählten Umgebungsnamen in die Namensgebung der anderen Parameter einfliessen lassen solltest.

Hub region

Die Netzwerke kannst du ohne Probleme in verschiedenen Azure Regionen erstellen. Bei diesem Parameter definierst du, in welcher Region das Hub-Netzwerk erstellt wird. Normalerweise möchtest du das Hub-Netzwerk in der gleichen Region erstellen, wie die Ressourcengruppe. In diesem Fall kannst du die Funktion beziehungsweise den Standardwert stehen lassen und weiterfahren. Alternativ kannst du die Region explizit definieren, beispielsweise «West Europe», «North Europe», etc.

Virtual Networks hub vnet name

Definiere hier den gewünschten Namen deines Hub-Netzwerkes. Dies ist der erste Parameter, der zwingend angepasst werden muss. Ersetze den gelben Teil «$TEST/PROD-$LOCATION» durch die Werte von «Environment Name» und einer definierten Kurzform der Region. Als Beispiel: «vnet-hub-test-euw-001».

Bastion Hosts name

Als nächstes definierst du den Namen des Bastion Hosts. Auch hier ist ein Editieren des Standardwertes zwingend notwendig (gelbe Markierung).
Beispiel: «bast-hub-test-euw-001»

Spoke 1 region

Dieser Parameter muss nicht zwingend angepasst werden. Es gilt gleiches wie für den Parameter «Hub region». Falls das Spoke-Netzwerk 1 in einer anderen Region erstellt werden soll als die Ressourcengruppe, so definiere diese hier. Oft ist das Spoke-Netzwerk aber in derselben Region gewünscht. In diesem Fall behalte einfach den Standardwert bei.

Virtual Networks spoke 1 name

Definiere als nächstes den Namen des Spoke-Netzwerk 1. Bei diesem Parameter gilt wiederrum gleiches wie für Parameter «Virtual Networks hub vnet name».
Beispiel: «vnet-spoke-test-euw-001»

Spoke 2 region

Gleiches wie bei Parameter «Spoke 1 region» gilt auch für diesen. Ändere den Parameter nur, wenn du das Spoke-Netzwerk 2 nicht in derselben Region wie die Ressourcengruppe erstellen möchtest. Mit folgendem Beispiel wird das Spoke-Netzwerk 2 in Nordeuropa und somit in einer anderen Region erstellt.
Beispiel: «north europe»

Virtual Networks spoke 2 name

Definiere mittels dieses Parameters den Namen des Spoke-Netzwerk 2. Achte dich auf copy-paste Fehler, falls das Spoke-Netzwerk 2 in einer anderen Region erstellt wurde. Überprüfe den Namen auf die korrekte Region.
Beispiel: «vnet-spoke-test-eun-001»

Network Security Groups Parameters

Zu guter letzt die vier Parameter zu den Network Security Groups. Die Parameter «Network Security Groups hub DMZ», «…Azure Bastion Subnet», «…Spoke1» und «…Spoke2» brauchst du nicht zwingend anzupassen, da diese keine Variablen enthalten. Sie definieren den Namen der NSGs, welche dem entsprechenden Subnet angehängt werden. Prüfe die Standardwerte aber ohnehin, ob du mit der Namensgebung zufrieden bist und diese in dein Konzept passen.

Überprüfen und Erstellen der Umgebung

Wenn du das Template verstanden, alle Parameter geprüft und wo nötig angepasst hast, so kannst du all die erwähnten Ressourcen mit wenigen Klicks erstellen. Wähle den Button «Review + create». Überprüfe all deine Angaben noch ein letztes Mal genau, bevor du das Deployment per Button «Create» effektiv in Auftrag gibst. Als Resultat steht nach ein paar Minuten dein Hub and Spoke Netzwerk mit zentraler Azure Bastion zu deiner Verfügung bereit, welches du erfolgreich mittels ARM Template erstellt hast.

Hinterlassen Sie einen Kommentar

de_CHGerman