Erkunden der Azure Resource Manager-Vorlagenstruktur
In dieser Lerneinheit erfahren Sie, wie Sie Azure Resource Manager-Vorlagen (ARM-Vorlagen) verwenden, um Infrastruktur als Code zu implementieren. Sie erhalten einen Überblick über die Abschnitte einer ARM-Vorlage, erfahren, wie Sie Ihre ARM-Vorlage in Azure bereitstellen, und informieren sich ausführlich über den 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 parallel erstellt, sodass ARM-Vorlagenbereitstellungen schneller abgeschlossen werden als skriptgesteuerte Bereitstellungen.
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 ist.
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. Sie können diese Werte in einer Parameterdatei, über Befehlszeilenparameter oder im Azure-Portal angeben. |
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.
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 ermitteln. Beachten Sie, dass die Eigenschaften nach API-Version sortiert sind.
Im Folgenden finden Sie ein Beispiel für einige der auf der Seite „Speicherkonten“ aufgelisteten Eigenschaften:
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": "2023-05-01",
"name": "learntemplatestorage123",
"location": "westus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
],
"outputs": {}
}