0Pricing
Cloud & IT Cert Prep · Lektion

Bicep: Moderne IaC für Azure

Lernen Sie die kompakte Syntax von Bicep als stark typisierte Abstraktion über ARM-JSON kennen, konvertieren Sie eine vorhandene ARM-Vorlage in Bicep und stellen Sie sie mit der Azure CLI bereit.

Bicep: Moderne IaC für Azure ist eine kostenlose Cloud & IT Cert Prep-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cloud & IT Cert Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.

Was ist Bicep und warum sollte man es verwenden?

Bicep ist eine von Microsoft entwickelte domänenspezifische Sprache (DSL) und eine typsichere, kompakte Alternative zu ARM-JSON-Vorlagen. Bicep wird in standardmäßiges ARM-JSON kompiliert, verwendet daher dieselbe ARM-Bereitstellungsengine und unterstützt vom ersten Tag an alle Azure-Ressourcentypen. Bicep beseitigt einen großen Teil des erforderlichen Boilerplate-Codes von reinem JSON und bietet eine bessere Typsicherheit sowie IntelliSense-Unterstützung.

Vergleich der Bicep- und ARM-JSON-Syntax

Für dasselbe Speicherkonto, das in einer ARM-Vorlage etwa 25 JSON-Zeilen benötigt, reichen in Bicep nur etwa 8 Zeilen. Bicep entfernt '$schema', contentVersion, die umgebende Struktur des resources-Arrays und die ausführliche Syntax für Ausdrücke. Eigenschaftsnamen und -typen bleiben identisch, da Bicep eine direkte Abstraktionsebene über ARM-JSON ist — zur Laufzeit gibt es keinen Unterschied.

// Bicep: deploy a storage account
param storageAccountName string
param location string = resourceGroup().location
param sku string = 'Standard_LRS'

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: sku
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
    minimumTlsVersion: 'TLS1_2'
  }
}

Parameter und Decorators in Bicep

Bicep-Parameter verwenden die kompakte Syntax param name type = defaultValue. Sie können direkt über einem Parameter Decorators (mit dem Präfix @) anwenden, um Einschränkungen wie @minLength(), @maxLength(), @allowed() und @description() hinzuzufügen. Der Decorator @secure() kennzeichnet einen Parameter als sensibel und entspricht secureString in ARM-JSON.

@description('Globally unique name for the storage account')
@minLength(3)
@maxLength(24)
param storageAccountName string

@allowed(['Standard_LRS', 'Standard_GRS', 'Premium_LRS'])
param sku string = 'Standard_LRS'

@secure()
param adminPassword string

Variablen und Ausdrücke in Bicep

Variablen in Bicep werden mit dem Schlüsselwort var deklariert und können jeden Ausdruck enthalten, einschließlich der Zeichenfolgeninterpolation mit der Syntax '${value}'. Die Zeichenfolgeninterpolation ist eine der besser lesbaren Verbesserungen gegenüber ARM-JSON — Aufrufe der Funktion concat() sind nicht mehr erforderlich. Bicep unterstützt außerdem bedingte Ausdrücke mit dem ternären Operator condition ? trueValue : falseValue.

param environment string = 'dev'
param baseName string = 'myapp'

var uniqueSuffix = uniqueString(resourceGroup().id)
var storageAccountName = '${baseName}${environment}${uniqueSuffix}'
var isProd = environment == 'prod'
var skuName = isProd ? 'Standard_GRS' : 'Standard_LRS'

Ressourcendeklarationen und symbolische Namen

In Bicep erhält jede Ressource einen symbolischen Namen — einen Bezeichner, mit dem innerhalb der Vorlage auf sie verwiesen wird. Der symbolische Name ist nicht identisch mit dem Azure-Namen der Ressource. Verwenden Sie symbolische Namen, um auf Ressourceneigenschaften zuzugreifen und implizite Abhängigkeiten herzustellen, indem Sie innerhalb einer Ressource auf eine andere verweisen. Dadurch ist kein explizites dependsOn-Array erforderlich.

resource vnet 'Microsoft.Network/virtualNetworks@2023-05-01' = {
  name: 'myVNet'
  location: location
  properties: {
    addressSpace: { addressPrefixes: ['10.0.0.0/16'] }
  }
}

// Implicit dependency via symbolic name reference
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2023-05-01' = {
  parent: vnet  // Bicep knows to create vnet first
  name: 'mySubnet'
  properties: {
    addressPrefix: '10.0.1.0/24'
  }
}

Ausgaben in Bicep

Ausgaben in Bicep werden mit dem Schlüsselwort output gefolgt vom Namen, Typ und Wert der Ausgabe deklariert. Sie können mithilfe des symbolischen Namens und der Punktnotation auf die Eigenschaften einer bereitgestellten Ressource verweisen. Das ist deutlich besser lesbar als die ARM-Funktion reference(). Ausgaben sind unverzichtbar, um Werte zwischen Bicep-Modulaufrufen zu übergeben.

output storageAccountName string = storageAccount.name
output blobEndpoint string = storageAccount.properties.primaryEndpoints.blob
output storageAccountId string = storageAccount.id

Bicep-Module

Bicep-Module entsprechen verknüpften Vorlagen in ARM-JSON und ermöglichen es Ihnen, Ihre Infrastruktur in wiederverwendbare Komponenten aufzuteilen. Ein Modul ist einfach eine weitere .bicep-Datei. Sie verweisen mithilfe des Schlüsselworts module darauf, übergeben Parameter und verwenden seine Ausgaben. Module können außerdem in einer Azure Container Registry veröffentlicht und von dort abgerufen werden, um sie im gesamten Team wiederzuverwenden.

// main.bicep — consuming a storage module
module storage './modules/storage.bicep' = {
  name: 'storageDeploy'
  params: {
    storageAccountName: 'myuniquestorage'
    location: location
    sku: 'Standard_LRS'
  }
}

// Reference module output in parent template
output blobUri string = storage.outputs.blobEndpoint

ARM-Vorlagen in Bicep konvertieren

Wenn Sie bereits vorhandene ARM-JSON-Vorlagen haben, kann die Bicep CLI sie mit bicep decompile in Bicep dekompilieren. Das Ergebnis muss möglicherweise manuell bereinigt werden, bietet Ihnen jedoch einen hervorragenden Ausgangspunkt. Microsoft stellt außerdem unter aka.ms/bicepdemo ein Online-Playground bereit, in den Sie ARM-JSON einfügen können, um das entsprechende Bicep in Echtzeit anzuzeigen.

# Install the Bicep CLI (or use it via Azure CLI)
az bicep install
az bicep upgrade

# Decompile existing ARM JSON to Bicep
az bicep decompile --file azuredeploy.json
# Produces azuredeploy.bicep in the same directory

# Compile Bicep to ARM JSON (for inspection)
az bicep build --file main.bicep

Bicep mit der Azure CLI bereitstellen

Die Azure CLI unterstützt Bicep-Dateien direkt – Sie müssen sie vor der Bereitstellung nicht manuell in ARM-JSON kompilieren. Übergeben Sie den Pfad zur .bicep-Datei mit dem Flag --template-file an az deployment group create. Die CLI kompiliert die Datei dabei transparent. Die Unterbefehle validate und what-if funktionieren mit Bicep-Dateien genauso wie mit ARM-JSON.

# Deploy a Bicep file directly
az deployment group create \
  --resource-group MyRG \
  --template-file main.bicep \
  --parameters storageAccountName=myprodstore environment=prod

# What-if preview with Bicep
az deployment group what-if \
  --resource-group MyRG \
  --template-file main.bicep \
  --parameters storageAccountName=myprodstore environment=prod

Schleifen und Bedingungen in Bicep

Bicep unterstützt Ressourcenschleifen mit der Syntax for ... in, um mehrere Instanzen einer Ressource aus einem Array-Parameter zu erstellen und dadurch doppelte Copy-and-paste-Blöcke zu vermeiden. Das Schlüsselwort if ermöglicht die bedingte Bereitstellung von Ressourcen – eine Ressource wird nur eingeschlossen, wenn eine bestimmte Bedingung erfüllt ist. Beide Funktionen werden jeweils in die ARM-Konstrukte copy und condition kompiliert.

// Loop: create multiple storage accounts
param storageNames array = ['alpha', 'beta', 'gamma']

resource stores 'Microsoft.Storage/storageAccounts@2023-01-01' = [for name in storageNames: {
  name: '${name}${uniqueString(resourceGroup().id)}'
  location: location
  sku: { name: 'Standard_LRS' }
  kind: 'StorageV2'
}]

// Condition: only deploy in prod
param deployKeyVault bool = false

resource kv 'Microsoft.KeyVault/vaults@2023-07-01' = if (deployKeyVault) {
  name: 'myKeyVault'
  location: location
  properties: { sku: { family: 'A', name: 'standard' }, tenantId: subscription().tenantId, accessPolicies: [] }
}

Bicep-Tools und Linting

Die Bicep-Erweiterung für Visual Studio Code bietet umfangreiche IntelliSense-Unterstützung, Typüberprüfung und die Hervorhebung von Fehlern direkt während der Eingabe. Die Bicep CLI enthält einen Linter, der Verstöße gegen Best Practices erkennt, beispielsweise nicht verwendete Parameter, fehlende Beschreibungen und falsche API-Versionen. Führen Sie az bicep lint --file main.bicep in Ihrer CI-Pipeline aus, um Probleme vor der Bereitstellung zu erkennen.

# Run the Bicep linter
az bicep lint --file main.bicep

# Format a Bicep file
az bicep format --file main.bicep

# Generate resource type documentation
az bicep generate-params --file main.bicep --output-format json

Schnelltest

Testen Sie Ihr Verständnis der Konzepte aus Microsoft Azure Fundamentals (AZ-900) in dieser Lektion.

Zusammenfassung der Lektion

In dieser Lektion haben Sie gelernt: Bicep ist eine kompakte, stark typisierte Abstraktion über ARM-JSON, die in standardmäßige ARM-Vorlagen kompiliert wird. Module und Schleifen ermöglichen wiederverwendbaren und DRY-Infrastrukturcode, und die Azure CLI stellt Bicep-Dateien direkt bereit und unterstützt dabei denselben Workflow aus Validierung, What-if-Analyse und Bereitstellung. Als Nächstes beschäftigen wir uns mit Terraform in Azure.

Häufig gestellte Fragen

Ist die Lektion „Bicep: Moderne IaC für Azure“ kostenlos?

Ja — der vollständige Text von „Bicep: Moderne IaC für Azure“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cloud & IT Cert Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Bicep: Moderne IaC für Azure“?

Lernen Sie die kompakte Syntax von Bicep als stark typisierte Abstraktion über ARM-JSON kennen, konvertieren Sie eine vorhandene ARM-Vorlage in Bicep und stellen Sie sie mit der Azure CLI bereit. Du übst Cloud & IT Cert Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Cloud & IT Cert Prep zu starten?

Keine Vorkenntnisse erforderlich. Cloud & IT Cert Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Bicep: Moderne IaC für Azure“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Cloud & IT Cert Prep-Lektion Code schreiben und ausführen?

Ja. Jede Cloud & IT Cert Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. So funktioniert Azure Resource Manager
  2. ARM-Vorlagen schreiben
  3. Bicep: Moderne IaC für Azure
  4. Terraform in Azure
← Zurück zu Cloud & IT Cert Prep