Erkunden der Azure Resource Manager-Vorlagenstruktur

Abgeschlossen

In dieser Lerneinheit erfahren Sie, wie Sie Azure Resource Manager-Vorlagen (ARM-Vorlagen) verwenden, um Infrastructure-as-Code zu implementieren. Sie erhalten einen Überblick über die Abschnitte einer ARM-Vorlage, erfahren, wie Sie Ihre ARM-Vorlage in Azure bereitstellen, und erhalten detaillierte Informationen zum Abschnitt Ressourcen der ARM-Vorlage.

Was ist Infrastruktur als Code?

Infrastruktur als Code ermöglicht es Ihnen, die für Ihre Anwendung benötigte Infrastruktur durch Code zu beschreiben.

Mit Infrastruktur als Code können Sie sowohl Ihren Anwendungscode als auch alles, was Sie zum Bereitstellen Ihrer Anwendung benötigen, in einem zentralen Coderepository verwalten. Die Vorteile von Infrastruktur als Code sind:

  • Konsistente Konfigurationen
  • Verbesserte Skalierbarkeit
  • Schnellere Bereitstellungen
  • Bessere Nachverfolgbarkeit

In diesem Video wird Infrastructure-as-Code erläutert:

Was ist eine ARM-Vorlage?

ARM-Vorlagen sind JSON-Dateien (JavaScript Object Notation), die die Infrastruktur und Konfiguration für Ihre Bereitstellung definieren. Die Vorlage verwendet eine deklarative Syntax. Die deklarative Syntax ist eine Möglichkeit, die Struktur und die Elemente zu erstellen, die umreißen, wie Ressourcen aussehen werden, ohne deren Ablaufsteuerung zu beschreiben. Deklarative Syntax unterscheidet sich von imperativer Syntax, bei der Befehle verwendet werden, die der Computer ausführt. Die imperative Skripterstellung konzentriert sich darauf, jeden einzelnen Schritt bei der Bereitstellung der Ressourcen anzugeben.

Mit ARM-Vorlagen können Sie deklarieren, was Sie bereitstellen möchten, ohne die Sequenz der Programmierbefehle schreiben zu müssen, um sie zu erstellen. In einer ARM-Vorlage legen Sie die Ressourcen und die Eigenschaften für diese Ressourcen fest. Azure Resource Manager verwendet diese Informationen, um die Ressourcen organisiert und konsistent bereitzustellen.

Vorteile der Verwendung von ARM-Vorlagen

Mithilfe von ARM-Vorlagen können Sie Bereitstellungen automatisieren und die Methode der Infrastruktur als Code (IaC) verwenden. Der Vorlagencode wird Teil Ihrer Infrastruktur und der Entwicklungsprojekte. Ebenso wie Anwendungscode können Sie die IaC-Dateien in einem Quellrepository speichern und sie mit einer Version versehen.

ARM1-Vorlagen sind idempotent, d. h., dass Sie dieselbe Vorlage mehrmals bereitstellen können, wobei Sie dann dieselben Ressourcentypen im selben Zustand erhalten.

Resource Manager orchestriert die Bereitstellung der Ressourcen, sodass diese in der richtigen Reihenfolge erstellt werden. Wenn möglich, werden Ressourcen auch parallel erstellt, sodass ARM-Vorlagenbereitstellungen schneller abgeschlossen werden als skriptgesteuerte Bereitstellungen.

Diagram showing a mapping of the template processing procedure. There's only one call to process a template as opposed to several calls to process scripts.

Resource Manager besitzt auch eine integrierte Überprüfung Der Dienst überprüft die Vorlage vor dem Start der Bereitstellung, um sicherzustellen, dass die Bereitstellung erfolgreich sein wird.

Wenn Ihre Bereitstellungen komplexer werden, können Sie Ihre ARM-Vorlagen in kleinere, wiederverwendbare Komponenten aufteilen. Sie können diese kleineren Vorlagen zum Zeitpunkt der Bereitstellung miteinander verknüpfen. Sie können Vorlagen auch in andere Vorlagen schachteln.

Im Azure-Portal können Sie Ihren Bereitstellungsverlauf überprüfen und Informationen zum Zustand der Bereitstellung abrufen. Im Portal werden Werte für alle Parameter und Ausgaben angezeigt.

Sie können Ihre ARM-Vorlagen auch in Continuous Integration und Continuous Deployment (CI/CD)-Tools wie Azure Pipelines integrieren, wodurch Ihre Releasepipelines für schnelle und zuverlässige Updates von Anwendungen und Infrastrukturen automatisiert werden können. Mithilfe von Azure DevOps- und ARM-Vorlagentasks können Sie Ihre Projekte fortlaufend erstellen und bereitstellen.

ARM-Vorlagendateistruktur

Wenn Sie eine ARM-Vorlage schreiben, müssen Sie sich mit allen Teilen, aus denen die Vorlage besteht, sowie deren Funktionen vertraut machen. ARM-Vorlagendateien bestehen aus den folgenden Elementen:

Element BESCHREIBUNG
schema Ein erforderlicher Abschnitt, der den Speicherort der JSON-Schemadatei definiert, in der die Struktur von JSON-Daten beschrieben wird. Die von Ihnen verwendete Versionsnummer hängt vom Umfang der Bereitstellung und vom JSON-Editor ab.
contentVersion Ein erforderlicher Abschnitt, der die Version Ihrer Vorlage definiert (z. B. 1.0.0.0). Mit diesem Wert können Sie signifikante Änderungen an Ihrer Vorlage dokumentieren, um sicherzustellen, dass Sie die richtige Vorlage bereitstellen.
apiProfile Ein optionaler Abschnitt, der eine Sammlung von API-Versionen für Ressourcentypen definiert. Sie können diesen Wert verwenden, um zu vermeiden, dass Sie API-Versionen für jede Ressource in der Vorlage angeben müssen.
parameters Ein optionaler Abschnitt, in dem Sie Werte definieren, die während der Bereitstellung angegeben werden. Diese Werte können über eine Parameterdatei, über Befehlszeilenparameter oder im Azure-Portal bereitgestellt werden.
variables Ein optionaler Abschnitt, in dem Sie Werte definieren, die verwendet werden, um Vorlagensprachausdrücke zu vereinfachen.
functions Ein optionaler Abschnitt, in dem Sie benutzerdefinierten Funktionen (UDF) definieren können, die in der Vorlage verfügbar sind. Benutzerdefinierte Funktionen können Ihre Vorlage vereinfachen, wenn komplizierte Ausdrücke wiederholt in der Vorlage verwendet werden.
resources Ein erforderlicher Abschnitt, der die tatsächlichen Elemente, die Sie in einer Ressourcengruppe oder einem Abonnement bereitstellen bzw. aktualisieren möchten, definiert.
output Ein optionaler Abschnitt, in dem Sie die Werte angeben, die am Ende der Bereitstellung zurückgegeben werden.

Bereitstellen einer ARM-Vorlage in Azure

Sie können eine ARM-Vorlage in Azure mit einer der folgenden Methoden bereitstellen:

  • Bereitstellen als lokale Vorlage
  • Bereitstellen als verknüpfte Vorlage
  • Bereitstellen in einer Continuous Deployment-Pipeline

Dieses Modul konzentriert sich auf die Bereitstellung einer lokalen ARM-Vorlage. In zukünftigen Learn-Modulen erfahren Sie, wie Sie eine kompliziertere Infrastruktur bereitstellen und diese mit Azure Pipelines integrieren.

Für das Bereitstellen einer lokalen Vorlage benötigen Sie eine lokale Installation von Azure PowerShell oder der Azure CLI.

Zunächst melden Sie sich mit Azure CLI oder Azure PowerShell bei Azure an.

az login

Definieren Sie als Nächstes Ihre Ressourcengruppe. Sie können eine bereits definierte Ressourcengruppe verwenden oder eine neue erstellen, indem Sie den folgenden Befehl verwenden. Verfügbare Speicherortwerte erhalten Sie von az account list-locations (CLI) oder Get-AzLocation (PowerShell). Sie können den standardmäßig verwendeten Standort mit az configure --defaults location=<location> konfigurieren.

az group create \
  --name {name of your resource group} \
  --location "{location}"

Verwenden Sie zum Starten der Bereitstellung der Vorlage in der Ressourcengruppe entweder den Azure CLI-Befehl az deployment group create oder den Azure PowerShell-Befehl New-AzResourceGroupDeployment.

Tipp

Der Unterschied zwischen az deployment group create und az group deployment create besteht darin, dass az group deployment create ein alter Befehl ist, der als veraltet markiert und durch az deployment group create ersetzt wird. Daher empfehlen wir die Verwendung von az deployment group create, um Ressourcen im Bereich der Ressourcengruppe bereitzustellen.

Beide Befehle benötigen die Ressourcengruppe, die Region und den Namen für die Bereitstellung, damit Sie sie im Bereitstellungsverlauf leicht identifizieren können. Der Einfachheit halber wird in den Übungen eine Variable erstellt, die den Pfad zur Vorlagendatei speichert. Diese Variable erleichtert die Ausführung der Bereitstellungsbefehle, da Sie den Pfad nicht bei jeder Bereitstellung erneut eingeben müssen. Ein Beispiel:

Für die Ausführung dieses Bereitstellungsbefehls müssen Sie über die aktuelle Version der Azure CLI verfügen.

templateFile="{provide-the-path-to-the-template-file}"
az deployment group create \
  --name blanktemplate \
  --resource-group myResourceGroup \
  --template-file $templateFile

Verwenden Sie verknüpfte Vorlagen, um komplexe Lösungen bereitzustellen. Sie können eine Vorlage in viele Vorlagen aufteilen und diese Vorlagen dann über eine Hauptvorlage bereitstellen. Durch Bereitstellen der Hauptvorlage wird die Bereitstellung der verknüpften Vorlage ausgelöst. Sie können die verknüpfte Vorlage mit einem SAS-Token speichern und sichern.

Eine CI/CD-Pipeline automatisiert die Erstellung und Bereitstellung von Entwicklungsprojekten, einschließlich der ARM-Vorlagenprojekte. Die zwei gängigsten Pipelines, die für die Vorlagenbereitstellung verwendet werden, sind Azure Pipelines und GitHub Actions.

Weitere Informationen zu diesen beiden Bereitstellungsarten finden Sie in anderen Modulen.

Hinzufügen von Ressourcen zur Vorlage

Um Ihrer Vorlage eine Ressource hinzuzufügen, müssen Sie den Ressourcenanbieter und dessen zugehörige Ressourcentypen kennen. Die Syntax für diese Kombination hat die Form {resource-provider}/{resource-type}. Um Ihrer Vorlage beispielsweise eine Speicherkontoressource hinzuzufügen, benötigen Sie den Ressourcenanbieter Microsoft.Storage. Einer der Typen für diesen Anbieter ist storageAccount. Ihr Ressourcentyp wird also als Microsoft.Storage/storageAccounts angezeigt. Sie können eine Liste von Ressourcenanbietern für Azure-Dienste verwenden, um die benötigten Anbieter zu finden.

Nachdem Sie den Anbieter und den Ressourcentyp definiert haben, müssen Sie die Eigenschaften für jeden Ressourcentyp verstehen, den Sie verwenden möchten. Weitere Informationen finden Sie unter Definieren von Ressourcen in Azure Resource Manager-Vorlagen. Sehen Sie sich die Liste in der linken Spalte an, um die Ressource zu suchen. Beachten Sie, dass die Eigenschaften nach API-Version sortiert sind.

Screenshot of a Microsoft documentation page showing the storage account documentation selected.

Im Folgenden finden Sie ein Beispiel für einige der auf der Seite „Speicherkonten“ aufgelisteten Eigenschaften:

Screenshot of a Microsoft documentation page showing some of the storage account properties.

In unserem Speicherbeispiel könnte Ihre Vorlage ungefähr wie folgt aussehen:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.1",
  "apiProfile": "",
  "parameters": {},
  "variables": {},
  "functions": [],
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      "name": "learntemplatestorage123",
      "location": "westus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ],
  "outputs": {}
}