Setup per CLI oder als Stand-alone-Runtime
Infrastructure as Code mit Azure Bicep, Teil 1
Der Einstieg in Azure Infrastructure as Code stellt schnell die Frage nach dem richtigen Einstiegspunkt. Für viele Teams ist Bicep die erste Wahl, weil es die Azure-native Alternative zu klassischen ARM-Templates darstellt und zugleich deutlich verständlicher und pflegeleichter wirkt. Der Grund liegt in der Syntax: Bicep ist kompakt, lesbar und auf den Azure-Use-Case zugeschnitten.
Warum Bicep?
Infrastructure as Code bedeutet im Kern, Infrastruktur nicht über das Portal oder manuelle Klickschritte, sondern über deklarativen Code zu definieren. Das schafft Wiederholbarkeit, Versionierung und Austauschbarkeit. Bei Azure ist Bicep heute die bevorzugte Lösung, wenn die native Azure-Umgebung ohne zusätzliche Abstraktion genutzt werden soll.
Der Vorteil von Bicep liegt darin, dass die Sprache auf ARM aufbaut, aber mit einer viel besser lesbaren Syntax arbeitet. Anstelle sehr umfangreicher JSON-Dateien entstehen Bicep-Dateien mit klaren Strukturen, leicht verständlichen Parametern und einer weitgehend intuitiven Definition von Ressourcen.
Ein typisches Beispiel sieht so aus:
param location string = resourceGroup().location
resource storage 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: 'demostorage${uniqueString(resourceGroup().id)}'
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}
Das ist bereits ein vollständiges, funktionales Template. Es beschreibt eine Azure-Storage-Account-Ressource mit wenigen Zeilen. Genau an dieser Stelle zeigt sich der eigentliche Unterschied zu ARM-JSON: Die Wartbarkeit und die Lesbarkeit steigen stark, ohne dabei die Azure-native Integrationsfähigkeit zu verlieren.
Das Bicep CLI: zwei Installationswege
Die eigentliche Engine hinter Bicep heißt Bicep CLI. Sie übernimmt das Kompilieren einer .bicep-Datei in ARM-JSON sowie Syntaxprüfungen. Für die Installation gibt es zwei gängige Wege.
Der erste Weg führt über das Azure CLI, welches das Bicep CLI direkt mitverwaltet. Falls das Modul fehlt oder veraltet ist, hilft:
az bicep install az bicep upgrade az bicep version
Der zweite Weg installiert das Bicep CLI eigenständig, ohne Abhängigkeit zum Azure CLI. Nach der manuellen Installation werden Bicep-Befehle direkt mit bicep statt mit az bicep aufgerufen.
Beide Varianten liefern dasselbe Bicep CLI; der Unterschied liegt lediglich darin, ob es über das Azure CLI eingebettet oder als eigenständiges Tool betrieben wird. Wer bereits mit az deployment ... arbeitet, bleibt meist beim ersten Weg. Für eine Azure-CLI-unabhängige Umgebung, etwa wenn Azure PowerShell im Einsatz ist, braucht es die Stand-alone-Installation. Außerdem wird die eigenständige Installation benötigt, wenn das Feature Bicep Console – ähnlich wie bei Terraform – zum Einsatz kommen soll; dazu mehr im weiteren Verlauf der Serie.
Grundbestandteile eines Bicep-Templates
Ein Bicep-Template setzt sich aus wenigen, klar abgegrenzten Elementen zusammen, hauptsächlich:
- Parameter (param): Eingabewerte, die beim Deployment von außen übergeben werden
- Variablen (var): intern berechnete Werte, abgeleitet aus Parametern oder festen Angaben
- Ressourcen (resource): die eigentlichen Azure-Objekte, etwa ein Storage-Account oder App Service Plan
- Module (module): Referenzen auf andere Bicep-Dateien zur Wiederverwendung ganzer Ressourcenblöcke
- Outputs (output): Rückgabewerte, die nach einem Deployment weiterverwendet werden können
Das Beispiel weiter oben zeigt bereits drei dieser Bausteine: einen Parameter für die Location, eine Ressourcendefinition für den Storage-Account sowie implizit eine Variable über den berechneten Namen. Die übrigen Teile dieser Serie vertiefen jeden dieser Bausteine einzeln. Die Reihenfolge im Template ist grundsätzlich beliebig, folgt in der Praxis aber meist der Reihenfolge aus dem Beispiel: Parameter, Variablen, Ressourcen, Outputs.
Visual Studio Code und Extensions
Theoretisch reichen eine Built-in-Konsole und Notepad. Für die ernsthafte tägliche Arbeit mit Bicep ist VS Code zusammen mit der offiziellen Bicep-Erweiterung die naheliegende Kombination. Die Erweiterung ergänzt IntelliSense für Ressourcentypen und -eigenschaften, Syntax-Highlighting, Inline-Fehlerdiagnostik sowie einen Befehl zur Visualisierung der Ressourcenstruktur. Tippfehler bei API-Versionen oder Eigenschaftsnamen werden dadurch bereits während des Schreibens sichtbar, lange bevor ein Build oder Deployment gestartet wird.
Nach der Installation von VS Code und der Bicep-Erweiterung genügt eine einzelne .bicep-Datei, um direkt loszulegen: Die Erweiterung erkennt den Dateityp automatisch und aktiviert alle Sprachfunktionen ohne zusätzliche Konfiguration.
Deployment eines Templates
Ein fertiges Template lässt sich auf mehreren Wegen bereitstellen, je nach bevorzugtem Workflow:
- Über das Kontextmenü in VS Code: Ein Rechtsklick auf die .bicep-Datei im Explorer, und die Auswahl Deploy Bicep File startet ein geführtes Deployment, bei dem Subscription, Resource Group und Parameter direkt im Editor abgefragt werden.
- Über das Bicep Deployment Pane: Eine Seitenleiste der Bicep-Erweiterung zeigt laufende und vergangene Deployments inklusive Status, sodass sich der Fortschritt verfolgen lässt, ohne zusätzlich das Azure CLI zu bemühen.
- Über ein CLI- oder PowerShell-Kommando: Der klassische Weg führt über az deployment group create, der sich gut für Automatisierung und Pipelines eignet.
az deployment group create ` --resource-group rg-bicep-demo ` --template-file .\01-bicep-setup.example.bicep
Alle drei Wege führen zum selben Ergebnis. Die Wahl hängt davon ab, ob ein schneller manueller Test oder ein automatisierter, wiederholbarer Ablauf im Vordergrund steht.
Best Practices für den Einstieg
- Ein kleines Beispiel ist der beste Einstieg und sinnvoller als ein großes Referenzprojekt. Ziel ist, zunächst einen erfolgreichen Durchstich zu erreichen.
- VS Code mit einer geeigneten Bicep-Erweiterung liefert sofort Feedback zur Syntax und Struktur.
- Die Syntax sollte vor dem Deployment mit einem lokalen Build geprüft werden.
- Parameter und Variablen werden bewusst benannt und lesbar gehalten.
- Unnötige Komplexität sollte in den ersten Beispielen vermieden werden.
Fazit
Bicep verbindet die Vorteile von ARM mit einer deutlich besseren Benutzererfahrung. Der Einstieg gelingt über das Bicep CLI, egal ob per Azure CLI oder als eigenständige Installation, und mit VS Code als Editor samt passender Erweiterung. Wichtig ist zunächst das Verständnis der Grundbausteine: Parameter, Variablen, Ressourcen, Outputs und Module.
Im nächsten Teil dieser Serie folgt der nächste Baustein: Parameter und Variablen, mit denen ein Template erst wirklich flexibel und wiederverwendbar wird.