Die Nordlicht Reisen GmbH will ihre Umgebungen nicht mehr von Hand klicken. Ein Kollege hat eine Vorlage für ein Speicherkonto geschrieben, und Sie sollen sie lesen, anpassen und bereitstellen. Außerdem soll eine Ressourcengruppe, die jemand im Portal angelegt hat, als Vorlage festgehalten werden. Genau das verlangt die Prüfung: eine ARM-Vorlage lesen, ändern, bereitstellen und eine Bereitstellung als ARM-Vorlage exportieren.
Vorwissen: Was Azure Resource Manager (ARM) ist und warum Infrastruktur als Code sinnvoll ist, steht in „AZ-900 kompakt“, Lektion 3.3, und in K3, Lektion 3.2.1. Die Sprache Bicep, Module und What-if lehrt K3 im Modul 3.2 (Lektionen 3.2.2 bis 3.2.4); Lektion 3.2 dieses Kurses ergänzt nur, was die Prüfung zu Bicep verlangt. Hier geht es um das JSON-Format, das hinter beiden steht.
Der Aufbau einer ARM-Vorlage
Eine ARM-Vorlage ist eine JSON-Datei. In der einfachsten Form besteht sie aus diesen Elementen (die Tabelle folgt Microsofts Beschreibung):
| Element | Pflicht | Wofür |
|---|---|---|
$schema |
ja | Adresse des JSON-Schemas, das die Version der Vorlagensprache beschreibt; es hängt vom Bereich der Bereitstellung ab |
contentVersion |
ja | Version der Vorlage, zum Beispiel 1.0.0.0; ein beliebiger Wert zum Festhalten wichtiger Änderungen |
parameters |
nein | Werte, die man bei der Bereitstellung angibt |
variables |
nein | Werte, die man in der Vorlage wiederverwendet, um Ausdrücke zu kürzen |
functions |
nein | eigene Funktionen |
resources |
ja | die Ressourcentypen, die bereitgestellt oder aktualisiert werden |
outputs |
nein | Werte, die nach der Bereitstellung zurückkommen |
Dazu kommen die Elemente languageVersion, apiProfile und definitions, die für diese Lektion keine Rolle spielen. Wichtig zu wissen: Mit "languageVersion": "2.0" wird resources ein Objekt statt einer Liste, und Ressourcen haben dann einen symbolischen Namen. Das passiert auch, wenn eine Bicep-Datei bestimmte Funktionen nutzt; Sie müssen es nur erkennen können.
Eine kleine, vollständige Vorlage, die ein Speicherkonto anlegt (Microsoft zeigt sie in dieser Form in der Dokumentation zu Vorlagen-Spezifikationen):
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
So lesen Sie sie:
- Parameter haben einen
type(string,securestring,int,bool,object,secureObject,array) und optionaldefaultValue,allowedValues,minLength,maxLength,minValue,maxValueundmetadatamit einerdescription. Hier muss der Name 3 bis 24 Zeichen lang sein, undlocationnimmt den Ort der Ressourcengruppe, wenn niemand etwas angibt. - Ausdrücke stehen in eckigen Klammern und in Anführungszeichen:
"[parameters('location')]"liest einen Parameter,[resourceGroup().location]ruft eine Funktion auf. - Ressourcen haben
type(Anbieter und Ressourcentyp, hierMicrosoft.Storage/storageAccounts),apiVersion(die Version der REST-Schnittstelle, mit der die Ressource angelegt wird),name, meistlocation, und je nach Typsku,kindundproperties.dependsOnlegt eine Reihenfolge fest; Ressourcen ohne Abhängigkeit werden parallel bereitgestellt. Microsoft rät: Nehmen Sie bei einer neuen Vorlage die aktuelle API-Version, und ändern Sie sie später nur, wenn Sie ein neues Merkmal brauchen. So sinkt das Risiko, dass eine neue Version das Verhalten ändert. - Ausgaben geben Werte zurück. Eine Ausgabe vom Typ
securestringerscheint nicht im Bereitstellungsverlauf. - Kommentare sind in Vorlagen mit
//und/* ... */möglich. Für die Azure CLI nennt Microsoft dazu den Schalter--handle-extended-json-format, den die Referenz zuaz deployment group createheute als veraltet kennzeichnet. Mehrzeilige Zeichenfolgen in Vorlagen gehen nach Microsofts Angabe nur mit Azure PowerShell oder Azure CLI, nicht über das Portal, eine DevOps-Pipeline oder die REST-Schnittstelle.
Die Grenzen aus der Dokumentation: höchstens 256 Parameter, 256 Variablen, 800 Ressourcen und 64 Ausgaben je Vorlage.