ARM-Vorlagen entdecken: Tutorial zum Azure Resource Manager

Active Directory

Illustration eines blauen Würfels

Sind Sie es leid, im Azure-Portal herumzuklicken und virtuelle Maschinen, Speicherkonten und App-Dienste anzulegen? Benötigen Sie eine zuverlässige Methode, um dieselbe Umgebung mehrmals zu erstellen? Klingt ganz so, als wäre es an der Zeit, ein paar ARM-Vorlagen zu schreiben!

ARM steht für Azure Resource Manager, Microsofts Bereitstellungs- und Verwaltungsdienst für Azure. Die ARM-Verwaltungsebene wird zum Erstellen, Aktualisieren und Löschen von Azure-Ressourcen verwendet. In diesem Artikel erfahren Sie mehr über ARM-Vorlagen, die Kernkomponenten beim Schreiben einer Vorlage und wie Sie diese Vorlage mit PowerShell bereitstellen.

Was sind ARM-Vorlagen?

ARM-Vorlagen sind eine Form von Infrastructure-as-Code, ein Konzept, bei dem man die Infrastruktur definiert, die man bereitstellen muss. Sie müssen sich nicht mehr durch das Portal klicken, virtuelle Maschinen erstellen oder Skripte schreiben, um ein Speicherkonto bereitzustellen. Stattdessen definiert die Vorlage die Ressourcen, und die Azure-ARM-Verwaltungsebene ist für die Erstellung der Infrastruktur verantwortlich.

Dieses Konzept wird als deklarative Syntax bezeichnet. Bei der deklarativen Syntax geben Sie an, welche Ressourcen Sie erstellen möchten, ohne die Befehlsfolge für die Erstellung zu schreiben. Sie können zum Beispiel ganz einfach ein Skript mit der Azure CLI oder Azure PowerShell erstellen, um eine virtuelle Maschine anzulegen. Sie müssen jedoch zahlreiche Logik- und Fehlerprüfungen einbeziehen, um ein beliebiges Szenario zu verarbeiten.

Das Erstellen einer deklarativen Vorlage definiert den Endzustand der Umgebung, und Azure nimmt die Vorlage als Eingabe und erstellt die Umgebung für Sie. Die ARM-Verwaltungsebene erstellt eine neue Ressource, wenn noch keine vorhanden ist, oder ändert eine vorhandene Ressource, wenn die Vorlage sich unterscheidet.

Microsoft hat eine neue Infrastructure-as-Code-Sprache namens Azure Bicep eingeführt. Weitere Informationen zu den ersten Schritten mit Bicep finden Sie im Artikel Azure Bicep: Einstieg und Leitfaden.

Vorteile von ARM-Vorlagen

Die Verwendung von ARM-Vorlagen bei der Verwaltung Ihrer Azure-Umgebung hat viele Vorteile. Wie bereits erwähnt entfällt durch die Verwendung der deklarativen Syntax die Notwendigkeit, komplizierte Bereitstellungsskripte zu schreiben, um mit mehreren Bereitstellungsszenarien zu arbeiten.

ARM-Vorlagen bieten auch wiederholbare Ergebnisse und sind idempotent, d. h. Sie können dieselbe Vorlage mehrmals schreiben und bereitstellen, um das gleiche Ergebnis zu erzielen. Sie können die gleiche Vorlage, die Sie für die Entwicklungsinfrastruktur benutzt haben, für die Bereitstellung der Produktionsumgebung verwenden. Die Verwendung der gleichen Vorlage stellt sicher, dass die Ressourcen und Einstellungen gleich sind.

Der Azure Resource Manager kümmert sich auch um die Reihenfolge der Operationen für die Bereitstellung. Infolgedessen stellt ARM abhängige Ressourcen in der richtigen Reihenfolge und, wenn möglich, parallel bereit, um eine schnellere Bereitstellung zu ermöglichen. Sie können die Vorlagen auch mit Bereitstellungsskripten in PowerShell oder Bash erweitern, um eine komplette End-to-End-Umgebung einzurichten.

Grundlagen von ARM-Vorlagen

Nachdem Sie nun einen Überblick über ARM-Vorlagen haben, ist es an der Zeit, zu lernen, wie Sie Ihre erste Vorlage schreiben können. Vorlagen verwenden eine JSON-Syntax (JavaScript Object Notation), die auch erweiterte Funktionen enthält. So sieht eine leere ARM-Vorlage aus:

{


"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",


"contentVersion": "1.0.0.0",


"parameters": {},


"functions": [],


"variables": {},


"resources": [],


"outputs": {}


}

Parameter

Mit Hilfe von Parametern können Sie verschiedene Werte an die ARM-Vorlage übergeben, die während der Bereitstellung verwendet werden sollen. Gängige Parameter sind etwa die Namen von Ressourcen oder die Azure-Region, in der sie gehostet werden sollen. Mit Parametern können Sie Ihre Vorlagen dynamischer gestalten und in verschiedenen Umgebungen verwenden.

Parameter erfordern mindestens einen Namen und einen Typ. Zu den Parametertypen gehören Strings, Arrays, Objekte, Ganzzahlen, Boolesche Variablen oder eine sichere Zeichenfolge, z. B. ein Kennwort. Optional enthält der Parameter auch eine Beschreibung, wie der Parameter zu verwenden ist. Sie können Standardwerte einfügen, so dass Sie zur Laufzeit keine Werte angeben müssen, und Sie können einen Satz zulässiger Werte konfigurieren. Zulässige Werte begrenzen, welche Werte für Parameter verwendet werden können. Diese Konfiguration ist nützlich, wenn Sie einschränken möchten, für welche SKUs oder Standorte eine Person Ressourcen bereitstellen kann.

Das folgende Beispiel zeigt verschiedene Parameterimplementierungen. Der Parameter VMName erlaubt die Verwendung eines beliebigen Strings für den Namen der virtuellen Maschine. Der Parameter VMAdmin erlaubt ebenfalls einen beliebigen Wert und hat einen Standardwert, damit die Person, die die Vorlage verwendet, diesen nicht immer angeben muss.

Das VMAdminPassword ist ein sicherer String, d. h. Azure speichert seinen Wert nicht im Bereitstellungsverlauf. Schließlich ist VMSize auch ein String, erlaubt aber nur bestimmte SKUs für die virtuelle Maschine.

"parameters": {


"VMName": {


"type": "string",


"metadata": {


"description": "Der Name der virtuellen Maschine."


}


},








"VMAdmin": {


"type": "string",


"metadata": {


"description": "Name des lokalen Administratorkontos für die virtuelle Maschine"


},


"defaultValue": "local_admin"


},








"VMAdminPassword": {


"type": "securestring",


"metadata": {


"description": "Passwort für das lokale Administratorkonto der virtuellen Maschine."


}


},








"VMSize": {


"type": "string",


"metadata": {


"description": "SKU-Größe der virtuellen Maschine"


},


"allowedValues": [


"Standard_D2_v4",


"Standard_D4_v4",


"Standard_D8_v4",


"Standard_D16_v4"


]


}


}

Um Parameterwerte bereitzustellen, können Sie Inline-Werte übergeben, wenn Sie eine Ressourcenbereitstellung erstellen. Ein Beispiel dafür finden Sie weiter unten im Artikel.

Eine weitere Möglichkeit ist das Erstellen einer Parameterdatei, die die Werte enthält. Die Parameterdatei verwendet ebenfalls JSON-Syntax. Parameterdateien bieten auch erweiterte Funktionen, wie z. B. die Verbindung zu Azure Key Vault, um sensible Informationen wie Passwörter, SSH-Schlüssel oder Zertifikate zu extrahieren.

Obwohl dies nicht erforderlich ist, folgen ARM-Vorlagenparameterdateien in der Regel einer Namenskonvention, bei der Parameter in den Vorlagennamen einbezogen werden. Wenn Sie beispielsweise eine ARM-Vorlage namens virtualMachine.json haben, lautet der Parameterdateiname virtualMachine.parameters.json. Wenn Sie eine Vorlage für die Bereitstellung unterschiedlicher Umgebungen wiederverwenden, fügen Sie den Umgebungsnamen in die Parameterdatei ein. Dateinamen können zum Beispiel virtualMachine.parameters-dev.json oder virtualMachine.parameters-prod.json sein.

Hier ist eine Beispieldatei namens virtualMachine.parameters.json mit Werten für die zuvor in diesem Abschnitt definierten Parameter. Beachten Sie, dass der Parameter VMAdmin technisch optional ist, da es für ihn einen Standardwert gibt. Wenn Sie ihn nicht in diese Datei aufgenommen haben, verwendet die Vorlage den definierten Standardwert.

{


"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",


"contentVersion": "1.0.0.0",


"parameters": {


"VMName": {


"value": "webapp01"


},


"VMAdmin": {


"value": "svr_admin"


},


"VMAdminPassword": {


"value": "N0t@Rea!P@ss0wrd"


},


"VMSize": {


"value": "Standard_D4_v4"


}


}


}

Funktionen

Der nächste Abschnitt in der ARM-Vorlage beinhaltet die Funktionen. Mit Funktionen können Sie komplizierte Ausdrücke erstellen, die Sie später in der Vorlage nicht öfter wiederholen möchten. ARM-Vorlagenfunktionen sind viele Funktionen in anderen Programmiersprachen. Diese können Sie aufrufen, wenn Sie sie ausführen müssen, und Sie können Informationen an sie übergeben und einen Rückgabewert erwarten.

Angenommen, Sie müssen eindeutige Namen für Ressourcen erstellen. Anstatt denselben Code zu kopieren und einzufügen, um den eindeutigen Namen zu erzeugen, erstellen Sie eine Funktion, die einen eindeutigen Namen erstellt. Hier ist beispielsweise eine Funktion namens uniqueName mit einem Parameter prefix, die mithilfe der Ressourcengruppen-ID einen eindeutigen Namen zurückgibt.

Beachten Sie den namespace-Wert. Diesen Wert können Sie beliebig auswählen. Funktionen benötigen einen anderen Namespace-Wert, um Benennungskonflikte mit regulären Vorlagenfunktionen zu vermeiden.

"functions": [


{


"namespace": "varonis",


"members": {


"uniqueName": {


"parameters": [


{


"name": "prefix",


"type": "string"


}


],


"output": {


"type": "string",


"value": "[concat(toLower(parameters('prefix')), uniqueString(resourceGroup().id))]"


}


}


}


}


]

Hier ist ein Beispiel für den Aufruf der Funktion uniqueName mit der Übergabe von prodwebapp als Wert für den Parameter prefix. Anstelle des Strings können Sie auch einen Vorlagenparameter oder einen Variablenwert übergeben.

"name": "[varonis.uniqueName('prodwebapp')]"

Variablen

Variablen sind in ARM-Vorlagen nicht viel anders als in anderen Programmiersprachen. Variablen enthalten Werte, die wiederholt in der Vorlage verwendet werden. Wie bei Funktionen können Sie Variablen verwenden, um komplizierte Ausdrücke zu erstellen, so dass Sie diese nicht in der Vorlage wiederholen müssen.

Variablen haben die gleichen Datentypen wie Parameter, wie z. B. Strings, Objekte und Ganzzahlen. Variablen werden mit dem Doppelpunkt als Zuweisungsoperator definiert. Anstatt die Azure-Region als Parameter zu übergeben, können Sie sie z. B. als Variable definieren, etwa so:

"variables": {


"location": "westus2"


}

Um eine Variable später zu referenzieren, verwenden Sie die Funktion variable() mit dem Variablennamen, etwa so:

"location": "[variables('location')]"

Ressourcen

Und schließlich der wohl wichtigste Teil der ARM-Vorlage: die Ressourcen. Der Ressourcenabschnitt definiert, welche Azure-Ressourcen mit der Vorlage bereitgestellt werden sollen. Ressourcen können alles sein – von kleinen Objekten wie einer Netzwerksicherheitsgruppe bis hin zu virtuellen Maschinen, Speicherkonten oder Azure Functions.

Die meisten Ressourcen haben eine Reihe von gemeinsamen Eigenschaften. Hier finden Sie eine Vorlage für eine Ressourcendefinition mit Erläuterungen zu den einzelnen Teilen.

"name": “<resource name>”,


"type": "Microsoft.<resource provider>/<resource type>",


"apiVersion": "<api version>",


"tags": {


"key": "value"


},


"location": "<location>",


"dependsOn": [ ],


"properties": { }

 

  • Name: Name für die Ressource. Dieser Wert kann von einem Parameter, einer Variablen oder manuell eingestellt werden.
  • Type: Der Typ der bereitzustellenden Ressource. Der <resource provider> (Ressourcenanbieter) verweist auf die übergeordnete Familie der bereitzustellenden Ressourcen. Beispiele sind Microsoft.Compute, Microsoft.Storage und Microsoft.Network. Der <resource type> (Ressourcentyp) bildet die bereitzustellende Ressource genauer ab. Microsoft.Compute enthält zum Beispiel Ressourcen, die sich auf die Recheninfrastruktur beziehen, wie virtuelle Maschinen, Festplatten und Verfügbarkeitssätze. Der Ressourcenanbieter und der Ressourcentyp werden durch einen Schrägstrich ( / ) getrennt.
  • ApiVersion: Die API-Version bestimmt, welche Eigenschaften für die Konfiguration auf der Ressource verfügbar sind. Azure wächst, und Microsoft fügt oft neue Funktionen oder Einstellungen zu Ressourcen hinzu. Die API-Version in Kombination mit dem Ressourcentyp bestimmt, was Sie konfigurieren können. Die API-Version ist als JJJJ-MM-TT formatiert.
  • Tags: Sie können Ihre Ressourcen genauso taggen, wie wenn Sie sie im Azure-Portal erstellen. Tags ermöglichen das Organisieren von Ressourcen und bestehen aus einem Schlüssel-Wert-Paar. Zum Beispiel können Sie ein Tag haben, das die Umgebung der Ressource anzeigt, etwa Entwicklung oder Produktion.
  • Location: Die Location (Standort) ist die Azure-Region, in der die Ressource bereitgestellt wird. Normalerweise stellen Sie Ressourcen in der gleichen Ressourcengruppe bereit, wenn Sie eine Bereitstellung erstellen (Sie werden später eine Demo dazu sehen). Um den Standort automatisch auf denselben Standort wie die Ressourcengruppe zu setzen, verwenden Sie die Funktion resourceGroup() und die Eigenschaft location wie folgt:
“location”: "[resourceGroup().location]"
  • DependsOn: Im Gegensatz zu anderen Infrastrukturen wie Terraform müssen Sie für ARM-Vorlagen manuell Ressourcenabhängigkeiten erstellen. Abhängigkeiten bestimmen, in welcher Reihenfolge Azure die Ressourcen bereitstellen soll. Wenn beispielsweise eine ARM-Vorlage ein virtuelles Netzwerk und eine virtuelle Maschine bereitstellt, muss das virtuelle Netzwerk zuerst vorhanden sein, bevor die virtuelle Maschine erstellt werden kann.
  • Properties: Der Abschnitt „Properties“ (Eigenschaften) enthält Konfigurationsinformationen für die bereitzustellende Ressource. Zum Beispiel haben virtuelle Netzwerke Eigenschaften wie ihren Adressraum und Subnetze. Speicherkonten haben ihre Zugriffsebene und die minimal zulässige TLS-Version.

Outputs

Der Abschnitt Outputs (Ausgaben) definiert Werte und Informationen, die von der Bereitstellung zurückgegeben werden. Ausgaben sind hilfreich für Daten, die Azure während der Bereitstellung dynamisch generiert, etwa eine öffentliche IP-Adresse.

Hier sehen Sie ein Beispiel für einen Ausgabeabschnitt, der die Verbindungs-Endpoints für ein neu erstelltes Speicherkonto anzeigt. Die ARM-Vorlage erzeugt einen Speicherkontonamen in der Variablen stgAccountName.

"outputs": {


"endpoints": {


"type": "object",


"value": "[reference(variables('stgAcctName')).primaryEndpoints]"


}


}

Hier ist die Ausgabe der Bereitstellung mit den aufgelisteten primären Endpoints bei der Bereitstellung der ARM-Vorlage mithilfe von PowerShell

Bereitstellen von ARM-Vorlagen mit PowerShell

Es gibt zwar mehrere Möglichkeiten, Azure-Ressourcen mithilfe von ARM-Vorlagen bereitzustellen, aber dieses Tutorial konzentriert sich auf die Verwendung von PowerShell zur Bereitstellung eines Speicherkontos. Um diesem Tutorial folgen zu können, benötigen Sie:

  • PowerShell Version 5.1 oder höher. Dieses Tutorial verwendet Version 7.1.3.
  • Das Azure-PowerShell-Modul (Az) . Dieses Tutorial verwendet die Version 6.0.0.
  • Ein Azure-Abonnement mit ausreichenden Berechtigungen zum Erstellen von Ressourcen, z. B. Eigentümer oder Mitwirkender.

Wie Sie eine Verbindung zu anderen Microsoft-Cloud-Diensten herstellen können, erfahren Sie unter So stellen Sie eine Verbindung zu Office 365 PowerShell her: Azure AD-Module.

1. Stellen Sie die Verbindung mit Azure her

Um die Befehle aus dem Az-PowerShell-Modul zu verwenden, müssen Sie zunächst eine Verbindung zu Azure mit einem authentifizierten Konto herstellen. Verwenden Sie den Befehl Connect-AzAccount , und PowerShell öffnet einen Internetbrowser, um die Authentifizierung abzuschließen.

2. Erstellen einer Ressourcengruppe

Als Nächstes erstellen Sie eine Ressourcengruppe, die die ARM-Vorlagenressourcen enthalten wird. Verwenden Sie den Befehl New-AzResourceGroup und geben Sie der Ressourcengruppe einen Namen und eine Azure-Region. Speichern Sie das Ergebnis des Befehls in einer Variablen mit dem Namen $rg, damit Sie die Ressourcengruppe später referenzieren können. Der Name der Ressourcengruppe ist hier „armdemo-rg“ und der Standort ist auf „WestUs2“ festgelegt.

$rg = New-AzResourceGroup -Name armdemo-rg -Location WestUs2

3. Erstellen Sie eine ARM-Vorlage

Sie benötigen eine ARM-Vorlage mit einem definierten Speicherkonto, um die Ressource zu erstellen. Hier ist eine grundlegende ARM-Vorlage, die einen einzelnen Parameter namens StorageAccountName verwendet, um den Namen des Speicherkontos festzulegen. Speichern Sie dies in einer Datei namens storageAccount.json.

{


"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",


"contentVersion": "1.0.0.0",


"parameters": {


"StorageAccountName": {


"type": "string"


}


},


"functions": [],


"variables": {},


"resources": [


{


"name": "[parameters('StorageAccountName')]",


"type": "Microsoft.Storage/storageAccounts",


"apiVersion": "2021-01-01",


"tags": {},


"location": "[resourceGroup().location]",


"kind": "StorageV2",


"sku": {


"name": "Standard_LRS",


"tier": "Standard"


},


"properties": {}


}


],


"outputs": {}


}

Alternativ können Sie auch diese ARM-Vorlage von diesem GitHub-Repository herunterladen.

4. Stellen Sie die ARM-Vorlage bereit

Wenn die ARM-Vorlage fertig ist, können Sie das Speicherkonto jetzt in Ihrer Azure-Umgebung bereitstellen. Verwenden Sie zunächst den Befehl New-AzResourceGroupDeployment und geben Sie die Ressourcengruppe für die Bereitstellung ($rg.ResourceGroupName) sowie den Vorlagendateipfad storageAccount.json an. Um den Fortschritt der Ressourcengruppenbereitstellung anzuzeigen, fügen Sie den Parameter -Verbose hinzu.

Da die ARM-Vorlage einen Parameter verwendet, können Sie den Wert wie jeden anderen PowerShell-Parameter angeben. Fügen Sie den Parameter -StorageAccountName zu dem Befehl hinzu und geben Sie einen gültigen Speicherkontonamen ein. Der Speicherkontoname muss in Azure global eindeutig sein und komplett aus Zahlen und Kleinbuchstaben bestehen. Der Speicherkontoname lautet hier varonisarmtemplatedemo.

New-AzResourceGroupDeployment `

    -ResourceGroupName $rg.ResourceGroupName `

    -TemplateFile .\storageAccount.json `

    -StorageAccountName ‘varonisarmtemplatedemo’ `

    -Verbose

5. Bereitstellen mit einer Parameterdatei (optional)

Sie können zwar ARM-Vorlagenparameter entsprechend dem PowerShell-Bereitstellungsbefehl festlegen, diese Methode kann jedoch mühsam sein, wenn es viele Parameter gibt. Daher können Sie stattdessen eine Parameterdatei verwenden, um den Wert anzugeben.

Erstellen Sie eine neue Datei mit dem Namen storageAccount.parameters.json in demselben Verzeichnis wie die ARM-Vorlage mit diesem Inhalt. Ersetzen Sie den Namen des Speicherkontos durch einen eigenen. Dieses Lernprogramm verwendet den Namen varonisarmtemplatedemo2.

{


"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",


"contentVersion": "1.0.0.0",


"parameters": {


"StorageAccountName": {


"type": "string"


}


},


"functions": [],


"variables": {},


"resources": [


{


"name": "[parameters('StorageAccountName')]",


"type": "Microsoft.Storage/storageAccounts",


"apiVersion": "2021-01-01",


"tags": {},


"location": "[resourceGroup().location]",


"kind": "StorageV2",


"sku": {


"name": "Standard_LRS",


"tier": "Standard"


},


"properties": {}


}


],


"outputs": {}


}

Verwenden Sie denselben Befehl in Schritt 4 und fügen Sie den Parameter -TemplateParameterFile mit dem Wert der neuen Parameterdatei hinzu.

New-AzResourceGroupDeployment `

    -ResourceGroupName $rg.ResourceGroupName `

    -TemplateFile .\storageAccount.json `

    -TemplateParameterFile .\storageAccount.parameters.json `

    -Verbose

ARM-Bereitstellungsmodi

ARM-Vorlagenbereitstellungen haben zwei verschiedene Modi: inkrementell und vollständig. Der Unterschied zwischen diesen Modi besteht darin, wie der Resource-Manager-Dienst vorhandene Ressourcen behandelt, die nicht in der Vorlage definiert sind.

Für beide Modi versucht der Resource-Manager-Dienst, alle Vorlagenressourcen zu erstellen. Wenn die Ressource bereits vorhanden ist und mit der in der Vorlage definierten Ressource übereinstimmt, wird die Azure-Ressource unverändert gelassen. Wenn Sie zurückgehen und die Befehle aus dem vorherigen Abschnitt erneut ausführen würden, würde Azure keine Vorgänge ausführen.

Wenn Sie einen oder mehrere Eigenschaftswerte in einer Ressource ändern, aktualisiert Azure die Ressource mit dem neuen Wert. Beispielsweise können Sie im Speicherkonto die Speicher-SKU von Standard_LRS in Standard_GRS ändern, und Azure aktualisiert die Ressource.

Bereitstellung im inkrementellen Modus

Bei ARM-Vorlagenbereitstellungen ist der Standardmodus inkrementell. Dieser Modus bedeutet, dass Azure die Ressourcen in der Vorlage bereitstellt und andere Ressourcen, die in der Vorlage nicht angegeben sind, ignoriert. Das vorangegangene Tutorial veranschaulicht, wie das funktioniert. Sie haben ein Speicherkonto mit der Vorlage und dann ein anderes Speicherkonto mit einem anderen Namen in derselben Ressourcengruppe bereitgestellt.

Zusammenfassend lässt sich sagen, dass der inkrementelle Modus Ressourcen in der Ressourcengruppe bereitstellt (oder aktualisiert), aber alle vorhandenen Ressourcen unberührt lässt. Während der inkrementelle Modus standardmäßig implizit ist, können Sie -Mode Incremental in den vorherigen Befehlen verwenden, um den Bereitstellungsmodus explizit anzugeben.

Bereitstellung im vollständigen Modus

Der vollständige Modus weist ein völlig anderes und potenziell destruktives Verhalten auf. Bei Verwendung des vollständigen Modus löscht der Resource-Manager-Dienst alle Ressourcen aus der in der ARM-Vorlage angegebenen Ressourcengruppe.

Schauen wir uns ein Beispiel an. Ändern Sie zunächst den Namen des Speicherkontos in der Parameterdatei aus Schritt 5 in einen neuen Namen wie varonisarmtemplatedemo3. Führen Sie anschließend den Bereitstellungsbefehl erneut aus und fügen Sie -Mode Complete an.

New-AzResourceGroupDeployment `

    -ResourceGroupName $rg.ResourceGroupName `

    -TemplateFile .\storageAccount.json `

    -TemplateParameterFile .\storageAccount.parameters.json `

    -Mode Complete `

    -Verbose

Azure wird Sie fragen, ob Sie sicher sind, dass Sie mit dem vollständigen Bereitstellungsmodus fortfahren möchten, da der Resource-Manager-Dienst dabei möglicherweise Ressourcen löschen könnte. Geben Sie Y ein, um mit der Bereitstellung fortzufahren.

Sobald die Bereitstellung abgeschlossen ist, überprüfen Sie die Ressourcengruppe im Azure-Portal. Sie sollten jetzt nur noch das eine Speicherkonto aus der letzten Bereitstellung sehen. Das ist darauf zurückzuführen, dass der Resource Manager die anderen Speicherkonten gelöscht hat, da sie nicht in der ARM-Vorlage definiert waren.

Zusammenfassend lässt sich sagen, dass der vollständige Modus destruktiv ist, wenn Sie nicht alle Ressourcen in der ARM-Vorlage definieren. Überprüfen Sie daher unbedingt die PowerShell-Warnung, wenn Sie mit dem vollständigen Modus bereitstellen, und stellen Sie sicher, dass alle Ressourcen, die Sie beibehalten möchten, in der ARM-Vorlage definiert sind.

Best Practices für ARM-Vorlagen

Bei der Entwicklung von ARM-Vorlagen gibt es einige Best Practices, die Sie beachten sollten.

Sie sollten die Größe der Vorlage auf 4 MB beschränken. Diese Beschränkung gilt für die Vorlage, nachdem der Resource Manager die Vorlage mit iterativen Ressourcenbereitstellungen und Werten für Variablen und Parameter erweitert hat. Sie sind auch beschränkt auf:

  • 256 Parameter
  • 256 Variablen
  • 800 Ressourcen (einschließlich Kopienzahl)
  • 64 Ausgabewerte
  • 24.576 Zeichen in einem Vorlagenausdruck

Bei Parametern sollten Sie die Anzahl der Parameter minimieren und stattdessen Variablen oder Literalwerte für Eigenschaften verwenden, die bei der Bereitstellung nicht angegeben werden müssen. Verwenden Sie Parameter für Einstellungen, die sich je nach Umgebung ändern, z. B. SKU, Größe oder Kapazität. Stellen Sie immer Metadaten für den Parameter bereit, und verwenden Sie Standardwerte, um die Bereitstellung zu erleichtern. Standardwerte bieten auch ein Beispiel für Personen, die Ihre Vorlage verwenden.

Erstellen Sie Variablen, wenn ein Wert mehr als einmal in der Vorlage verwendet wird. Wenn Sie eine Ressourceneigenschaft aus einem komplizierten Ausdruck erstellen, sollten Sie erwägen, eine Variable zu verwenden, um den Rest der Vorlage leichter lesbar zu machen.

Schreiben Sie die Vorlagen- und Ressourcen-API-Version immer fest in den Code ein und verwenden Sie beim Erstellen einer neuen Vorlage die neueste API-Version. Wenn die Vorlage wie erwartet funktioniert, verwenden Sie weiterhin dieselbe API-Version, damit Sie sich keine Gedanken über Änderungen in späteren Versionen machen müssen.

Ressourcen zu ARM-Vorlagen

Microsoft Learn bietet Module an, um mehr über ARM-Vorlagen zu erfahren, einschließlich der Entwicklung und Bereitstellung komplexerer Umgebungen. Schauen Sie sich den Lernpfad Bereitstellen und Verwalten von Ressourcen in Azure mithilfe von JSON-ARM-Vorlagen an. Dort finden Sie vertiefende Module zur Entwicklung von ARM-Vorlagen.

Microsofts Visual Studio Code (VS Code) enthält Erweiterungen, die beim Schreiben von ARM-Vorlagen helfen. Sehen Sie sich dieses Schnellstart-Tutorial zum Schreiben von ARM-Vorlagen an. Darüber hinaus gibt es viele Erweiterungen von Microsoft und von Drittanbietern, die die Erstellung von ARM-Vorlagen erheblich beschleunigen.

FAQs zu ARM-Vorlagen

Was ist Azure Resource Manager (ARM)?

ARM steht für Azure Resource Manager, der Microsoft-Bereitstellungs- und Verwaltungsdienst für Azure. Die ARM-Verwaltungsebene wird zum Erstellen, Aktualisieren und Löschen von Azure-Ressourcen verwendet.

Was sind ARM-Vorlagen?

ARM-Vorlagen sind eine Form von Infrastructure-as-Code, ein Konzept, bei dem man die Infrastruktur definiert, die man bereitstellen muss. ARM-Vorlagen verwenden eine deklarative Syntax, d. h. Sie definieren die Ressourcen für die Bereitstellung in Azure, ohne anzugeben, wie die Ressourcen erstellt werden.

Was sind die Vorteile von ARM-Vorlagen?

Mit ARM-Vorlagen können Sie Ressourcen in Azure definieren und schnell erstellen. Da Sie die Ressourcen als Code definieren, können Sie schnell mehrere Entwicklungs-, Test- und Produktionsumgebungen bereitstellen.

Fazit

Die Definition von Azure-Infrastruktur mit Code bietet viele Vorteile, beispielsweise Wiederverwendbarkeit und Standardisierung. Sie können ARM-Vorlagen nicht nur für die anfängliche Bereitstellung von Ressourcen, sondern auch für die laufende Verwaltung verwenden. Indem Sie Ihre Infrastruktur als Code definieren, können Sie anschließend weitere Automatisierungen durchführen, beispielsweise die Verwendung von Azure DevOps oder GitHub Actions zur automatischen Bereitstellung von Infrastrukturänderungen.

Jeff Brown

Jeff Brown

Jeff Brown is a cloud engineer specializing in Microsoft technologies such as Office 365, Teams, Azure, and PowerShell.

 

Möchten Sie Varonis in Aktion erleben?

Vereinbaren Sie eine Demo oder wenden Sie sich an unseren Vertrieb unter +49 89 3803 7990