Infrastructure-as-Code mit Azure Bizep statt ARM
Nachdem wir uns in drei Beiträgen mit der Möglichkeit befasst haben, Ressourcen in Azure automatisiert mit Hilfe deklarativer Vorlagen nach dem „Infrastructure-as-Code“-Prinzip mit Hilfe von Azure-Resource-Manager-Templates bereitzustellen, werfen wir jetzt einen Blick auf die Descripting Language Bizep an. Die Sprache ermöglicht laut Microsoft ein im Vergleich zu ARM-Templates deutlich einfacheres Vorgehen beim Erstellen von Vorlagen.
Passende Schulungen
AZ-104 Microsoft Azure Administrator (AZ-104T00)
AZ-104 Microsoft Azure Administrator (AZ-104T00): Azure Administration für Profis
AZ-204 Developing Solutions for Microsoft Azure (AZ-204T00)
Du benötigst mehr Know-how rund um MS Azure? Dann empfehlen wir dir unsere Microsoft Azure Schulungen!
Mit Bicep stellt Microsoft eine weitere so genannte domänenspezifische Sprache (DSL) zur Verfügung, welche eine deklarative Syntax zum Bereitstellen von Azure-Ressourcen verwendet, ähnlich wie das auch Azure Resource Manager Vorlagen (ARM-Templates) tun. So definierst du auch in einer Bicep-Datei die Infrastruktur, die du in Azure bereitstellen möchtest und kannst diese formal in JSON verpackte Datei dann nicht nur zur initialen Bereitstellung deiner Infrastruktur, sondern über den gesamten Entwicklungslebenszyklus hinweg verwenden, auch um deine Infrastruktur beispielsweise wiederholt implementieren zu können. Soweit also kein prinzipiell nennenswerter Unterschied zu ARM-Templates.
Laut Microsoft stellt Bicep aber mit seiner sehr präzisen Syntax, der zuverlässigen Typsicherheit und der Wiederverwendbarkeit von Code das im Vergleich zu ARM-Templates bessere Toolset zum Erstellen von Infrastructure-as-Code-Lösungen dar und benennt dazu eine Reihe von Vorteilen.
Vorteile von Bizep
So unterstützt Bizep sämtliche Ressourcentypen und API-Versionen, auch alle Vorschau- und allgemein verfügbaren Versionen für Azure-Dienste direkt. Sobald ein bestimmter Ressourcenanbieter neue Ressourcentypen und API-Versionen einführt, lassen sich diese in einer Bicep-Datei benutzen.
Im direkten Vergleich mit einem ARM-Template sind Bicep-Dateien präziser und einfacher lesbar. Dazu sind laut Microsoft keinerlei Vorkenntnisse über Programmiersprachen notwendig. Erstellst du deine Bicep-Dateien zudem mit Hilfe von VS Code, profitierst du von zahlreichen nützlichen Funktionen, weil VS Code umfassende Typsicherheit, IntelliSense und Syntaxvalidierung mitbringt. Natürlich kannst du auch Bizep-Projekte modular aufsetzen und ihre Bereitstellung mit Hilfe von Modulen in kleinere verwaltbare Teile runterbrechen. Module ermöglichen das Wiederverwenden von Code, was letztendlich die Entwicklung vereinfacht. Bicep ist zudem bestens in zahlreiche in Azure-Diensten wie Azure Policy, Vorlagenspezifikationen oder Azure Blueprints integriert. Ein weiterer Vorteil ist, dass du keinen Status oder irgendwelche Statusdateien verwalten musst, weil sämtliche Statusänderungen direkt in Azure gespeichert werden. So können auch mehrere Benutzer zusammenarbeiten und sich immer darauf verlassen, dass ihre Updates wie erwartet verarbeitet werden. Dabei können sie mit Hilfe eines Was-wäre-wenn-Vorgangs auch vor der eigentlichen Bereitstellung der Vorlage jederzeit eine Vorschau der zu erwartenden Änderungen anzeigen. Bizep ist vollständig quelloffen und damit kostenlos. Es gibt auch keinerlei Premium-Features und trotzdem wird Bicep vollumfänglich vom Microsoft-Support unterstützt.
Arbeiten mit Bizep
Um möglichst effizient mit Bizep arbeiten zu können solltest du dafür sorgen, dass deine Umgebung für das Entwickeln und Bereitstellung von Bicep-Dateien geeignet ist. Am besten eignet sich dazu Visual Studio Code mit der Bicep-Erweiterung für Visual Studio Code. Diese bietet neben der prinzipiellen Sprachunterstützung automatische Vervollständigung für Ressourcen.
Suche dazu einfach in den VS Code Extension nach „Bicep“ und klicke auf „Installieren“.
Hast du deine Entwicklungsumgebung eingerichtet, kannst und musst du die Bicep CLI für deine Bereitstellungsumgebung installieren, wahlweise für Azure CLI oder Azure PowerShell. Die Schritte unterscheiden sich, sind aber in der Azure-Dokumentation gut erläutert. Bei der Azure-CLI brauchst du mindestens die Version 2.20.0, was du mittels
az --version
leicht überprüfen kannst. Installieren kannst du die Bicep-CLI dann einfach mit:
az bicep install
oder
az bicep update
zum Aktualisieren einer bestehenden Version.
Arbeiten mit VS Code
Zurück zu VS Code. Hast du die Erweiterung für Bicep installiert kannst du eine neue Datei mit der Erweiterung „.bicep“ anlegen. Jetzt kannst du einfach zum „resources“-Abschnitt wechseln „res.:“ tippen und dir dann anhand der Autovervollständigung die zu erstellenden Azure-Ressource aussuchen, z. B. res-storage.
Bicep erstellt dann den erforderlichen Rumpf:
Jetzt fehlt dir nur noch die zugehörigen Parameter-Definitionen. Dazu fügst du am Anfang des Dokuments den Abschnitt
param name
gefolgt von einem Leerzeichen ein, damit die Autovervollständigung die verfügbaren Typen anbietet, z. B. „string“.
Das Ergebnis könnte dann so aussehen:
Fehlt noch die Location. Diese kannst du entweder als eigenen Parameter definieren wie auch den Namen des Speicherkontos, oder du fügst im Resourcen-Abschnitt
location: resourceGroup().location
ein. Experimentiere nach Belieben mit den verfügbaren Ressource- und Parameter-Typen. Um dieses einfache Beispiel nun in Azure bereitzustellen, speichere die Datei ab und führe dann die Bereitstellung z. B in der Azure-CLI wie folgt aus:
az group create --name <ResourceGroup-Name> --location <location>
az deployment group create --resource-group <ResourceGroup-Name> --template-file main.bicep --parameters name=<mein name>
Das fertige Ergebnis sieht dann so aus:
Kontakt
„*“ zeigt erforderliche Felder an