Table of Contents
Automatisieren der Infrastrukturbereitstellung mit Azure ARM Templates
Das Cloud-Infrastrukturmanagement hat sich von der manuellen, klickzentrierten Bereitstellung bis hin zur deklarativen, codegesteuerten Automatisierung entwickelt. Azure Resource Manager (ARM)-Vorlagen stehen im Mittelpunkt dieser Verschiebung und ermöglichen Entwicklern und IT-Betriebsteams, Azure-Ressourcen mit wiederholbarer Präzision zu definieren, bereitzustellen und zu verwalten. Durch das Ausdrücken des gewünschten Zustands einer Lösung in einem strukturierten JSON-Dokument eliminieren ARM-Vorlagen die Variabilität und das Risiko, die in der manuellen Konfiguration enthalten sind. Dieser Artikel untersucht die grundlegenden Konzepte, praktischen Bereitstellungsstrategien, fortschrittlichen Techniken und bewährten Best Practices für die Verwendung von ARM-Vorlagen zur Automatisierung der Infrastrukturbereitstellung in großem Maßstab.
Was sind Azure ARM Templates?
Eine Azure ARM-Vorlage ist eine JavaScript Object Notation (JSON)-Datei, die eine Reihe von Azure-Ressourcen wie virtuelle Maschinen, virtuelle Netzwerke, Speicherkonten, Datenbanken und Anwendungsdienste und deren Konfiguration deklariert. Die Vorlage beschreibt , welche Ressourcen benötigt werden, , wie sie sich zueinander verhalten, und , welche Eigenschaften sie haben sollten. Beim Deployment liest der Azure Resource Manager-Dienst die Vorlage, erstellt oder aktualisiert die Ressourcen, um den gewünschten Zustand zu erreichen, und berichtet über das Ergebnis.
ARM-Vorlagen sind idempotent: Die mehrfache Bereitstellung derselben Vorlage führt zu demselben Ergebnis, solange die Parameter unverändert bleiben. Diese Eigenschaft ist für Infrastructure-as-Code-Workflows (IaC) unerlässlich, da sie es Teams ermöglicht, Bereitstellungen sicher erneut auszuführen, ohne unbeabsichtigte Nebenwirkungen zu verursachen. Vorlagen können in Versionskontrollsystemen gespeichert, in Pull-Requests überprüft und als Teil von Continuous Integration und Continuous Delivery (CI/CD)-Pipelines ausgeführt werden.
Jede Vorlage ist auf eine Ressourcengruppe oder ein Abonnement ausgerichtet und kann auf andere Vorlagen verweisen, wodurch modulare, zusammensetzbare Architekturen ermöglicht werden. Unabhängig davon, ob Sie eine einzelne Testumgebung oder ein Multi-Regionen-Produktionsnetzwerk bereitstellen, bieten ARM-Vorlagen einen konsistenten, überprüfbaren Mechanismus zur Verwaltung Ihres Azure-Fußabdrucks.
Vorteile der Verwendung von ARM Templates
Unternehmen, die ARM-Vorlagen verwenden, haben mehrere messbare Vorteile, die sowohl die betriebliche Effizienz als auch die Governance verbessern.
Konsistenz in allen Umgebungen
Manuelle Bereitstellung führt zwangsläufig zu einer Drift – etwas unterschiedliche Konfigurationen zwischen Entwicklung, Staging und Produktion. ARM-Vorlagen erzwingen eine einzige Quelle der Wahrheit. Wenn Sie dieselbe Vorlage mit umgebungsspezifischen Parametern bereitstellen, garantieren Sie, dass die zugrunde liegende Ressourcenkonfiguration identisch ist. Diese Konsistenz reduziert Probleme mit „Works on my machine und vereinfacht das Debuggen.
Automatisierung für CI/CD-Pipelines
ARM-Vorlagen lassen sich nahtlos in Azure DevOps, GitHub Actions, Jenkins und andere Pipeline-Tools integrieren. Eine Bereitstellung kann automatisch mit Code-Commits, zeitplanbasierten Aktualisierungen oder manuellen Genehmigungen ausgelöst werden. Diese Automatisierung beschleunigt Release-Zyklen und befreit Betriebsteams von sich wiederholender Aufgabenausführung. In Verbindung mit Infrastrukturtests und -validierung werden vollautomatische Pipelines zum Rückgrat des modernen Cloud-Engineerings.
Versionskontrolle und Auditing
Da es sich bei ARM-Vorlagen um einfache JSON-Dateien handelt, passen sie natürlich in Git-basierte Workflows. Jede Änderung der Infrastrukturdefinition wird verfolgt, sodass Teams den Verlauf überprüfen, Revisionen vergleichen und in einen bekannten Zustand zurückkehren können. In Kombination mit Azure Activity Logs können Sie genau bestimmen, welche Vorlagenversion zum Erstellen oder Ändern einer Ressource verwendet wurde, was Compliance- und Auditierungsanforderungen unterstützt.
Geschwindigkeit und Parallelisierung
ARM-Vorlagen nutzen die native Orchestrierungs-Engine von Azure, um Ressourcen parallel bereitzustellen, wo es Abhängigkeiten erlauben. Eine komplexe mehrstufige Anwendung, deren manuelle Einrichtung Stunden in Anspruch nehmen würde, kann in wenigen Minuten bereitgestellt werden. Darüber hinaus kann dieselbe Vorlage parametriert werden, um identische Stacks gleichzeitig in mehreren Regionen bereitzustellen, was eine schnelle geografische Erweiterung oder Katastrophenwiederherstellungsszenarien ermöglicht.
Kostenkontrolle und Governance
Durch die Definition von Ressourcengrößen, SKUs und Tags innerhalb der Vorlage erzwingen Unternehmen Tagging-Richtlinien, die in Kostenstellen, Rückbuchungen und Automatisierungsregeln eingespeist werden. Vorlagen können mit Azure-Richtlinien kombiniert werden, um die Bereitstellung nicht kompatibler Ressourcen zu verhindern und sicherzustellen, dass jede Umgebung von dem Moment an den internen Sicherheits- und Kostenbeschränkungen entspricht.
Anatomie einer ARM-Vorlage
Das Verständnis der Struktur einer ARM-Vorlage ist der erste Schritt zur effektiven Nutzung. Die JSON-Datei ist in mehrere Abschnitte unterteilt, von denen jeder eine bestimmte Rolle spielt.
Schema und Inhaltsversion
Jede Vorlage beginnt mit einer -Eigenschaft, die die Vorlagensprachenversion identifiziert, und einer -Eigenschaft, die die interne Versionierung unterstützt. Azure Resource Manager verwendet das Schema, um die Struktur der Vorlage zu validieren.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
...
}
Parameter
Der -Abschnitt definiert Eingaben, die zum Bereitstellungszeitpunkt bereitgestellt werden können. Dadurch können Vorlagen in allen Umgebungen wiederverwendbar sein. Gemeinsame Parameter umfassen Administrator-Anmeldeinformationen, Standort, Ressourcennamen und SKU-Auswahl. Standardwerte können bereitgestellt werden, um Bereitstellungen zu vereinfachen.
Variablen
Variablen werden verwendet, um Vorlagenausdrücke zu vereinfachen, Wiederholungen zu reduzieren und Werte zu berechnen, die von Parametern oder anderen Variablen abhängen. z. B. können Sie ein Namenspräfix mit dem Umgebungsnamen verketten, um eindeutige Ressourcenbezeichner zu generieren.
Ressourcen
Der Kern der Vorlage ist das -Array. Jedes Ressourcenobjekt gibt den Ressourcenanbieter, den Typ, die API-Version, den Namen, den Standort, die Eigenschaften und die Abhängigkeiten an. Azure Resource Manager verwendet die -Eigenschaft, um die Reihenfolge zu lösen – Ressourcen, die von anderen abhängen, werden erst nach Abschluss ihrer Voraussetzungen bereitgestellt.
Outputs
Gibt Werte aus, die nach dem Deployment zurückgegeben werden, wie z. B. der vollqualifizierte Domainname einer erstellten Web-App oder der Verbindungsstring einer Datenbank, die von nachfolgenden Pipelines verbraucht oder an verknüpfte Vorlagen zur Verwendung als Parameter übergeben werden können.
Wie man ein ARM Template einführt
Die Bereitstellung von ARM-Vorlagen kann über mehrere Schnittstellen erfolgen, die jeweils für verschiedene Workflows geeignet sind.
Verwenden des Azure Portals
Für schnelle, einmalige Bereitstellungen oder Lernzwecke bietet das Azure Portal ein "Deploy a custom template"-Blade. Sie können das JSON direkt einfügen oder aus einer Datei laden. Das Portal fordert Sie dann auf, Parameterwerte einzugeben und eine Validierungszusammenfassung vor der Bereitstellung anzuzeigen. Während diese Methode zugänglich ist, wird sie für Produktionspipelines aufgrund mangelnder Automatisierung nicht empfohlen.
Verwenden von Azure CLI
Das Azure Command-Line Interface (CLI) bietet den Befehl für die Bereitstellung von Ressourcengruppen.
az deployment group create \
--resource-group myResourceGroup \
--template-file azuredeploy.json \
--parameters @parameters.json
Die CLI validiert die Vorlagensyntax und Parameter vor dem Start der Bereitstellung und streamt den Fortschritt zum Terminal. Azure CLI wird in CI/CD-Skripten häufig verwendet, da es unter Linux, macOS und Windows-Agenten ausgeführt werden kann.
Verwenden von Azure PowerShell
PowerShell-Benutzer können mit dem -Cmdlet bereitgestellt werden. Die Erfahrung ähnelt der CLI, mit dem zusätzlichen Vorteil der integrierten PowerShell-Fehlerbehandlung und der Möglichkeit, sich in Azure Automation-Runbooks zu integrieren.
Mit REST API
Für maximale Kontrolle oder benutzerdefinierte Tools kann jeder Bereitstellungsvorgang über die Azure Resource Manager REST API aufgerufen werden. Dies ist der zugrunde liegende Mechanismus, den das Portal, CLI und PowerShell verwenden, aber die direkte Offenlegung ermöglicht es Entwicklern, Bereitstellungen in Nicht-Microsoft-Pipelines einzubetten.
Einsatzschritte
Unabhängig vom Tooling folgt der Bereitstellungsprozess einem konsistenten Muster:
- Definieren oder erwerben Sie die ARM-Vorlage – schreiben Sie entweder von Grund auf neu, exportieren Sie aus einer vorhandenen Ressourcengruppe oder verwenden Sie eine Schnellstartvorlage aus der Azure-Bibliothek (Azure Quickstart Templates.
- Parameter vorbereiten – Erstellen Sie eine separate Parameter-JSON-Datei oder übergeben Sie Parameterwerte über Befehlszeilenargumente.
- Validieren Sie die Vorlage – führen Sie die (PowerShell) oder (CLI) aus, um Syntaxfehler und fehlende Abhängigkeiten vor dem eigentlichen Einsatz zu fangen.
- Ausführen der Bereitstellung – Übermitteln Sie die Vorlage und die Parameter an den Azure Resource Manager.
- Überwachen und Verifizieren – Überprüfen Sie den Bereitstellungsstatus im Portal, Azure CLI oder Pipeline-Logs. Validieren Sie, dass alle Ressourcen mit der beabsichtigten Konfiguration erstellt wurden und dass die Konnektivität funktioniert.
Best Practices für ARM Templates
Das Schreiben effektiver ARM-Vorlagen erfordert mehr als nur Kenntnisse der Syntax. Die folgenden Praktiken wurden in Produktionsumgebungen bewährt und werden von Azure-Engineering-Teams empfohlen.
Modularisieren mit Linked Templates
Große, monolithische Vorlagen werden schwierig zu pflegen und wiederzuverwenden. Zerlegen Sie Ihre Infrastruktur in logische Komponenten - Netzwerken, Rechnen, Speichern, Anwendungen - und verweisen Sie sie mit verknüpften Vorlagen. Dieser Ansatz ermöglicht es verschiedenen Teams, ihre Module unabhängig zu besitzen und zu versionieren, während sie noch eine vollständige Umgebung erstellen. Verwenden Sie die -Eigenschaft, um auf die URL der untergeordneten Vorlage zu verweisen und Parameter nach Bedarf zu übergeben.
Geben Sie immer Standardwerte an
Parameter, die sicher auf einen vernünftigen Standard zurückgreifen können, sollten einen enthalten. Dies vereinfacht die Bereitstellung für Entwickler, die möglicherweise nicht jede SKU oder jeden Standort kennen. Vermeiden Sie jedoch Standardwerte für sensible Werte wie Passwörter - verwenden Sie stattdessen Key Vault-Referenzen mit Typ.
Verwenden Sie Ausdrücke und Funktionen
ARM-Vorlagen verfügen über eine Vielzahl von Vorlagenfunktionen wie , , und , die eine dynamische Konstruktion von Namen, Eigenschaften und Bedingungen ermöglichen. Zum Beispiel erzeugt einen weltweit einzigartigen, deterministischen Hash, der verwendet werden kann, um Speicherkonten oder andere Ressourcen zu benennen, die Einzigartigkeit erfordern. Vermeiden Sie Hardcoding-Werte, die aus der Umgebung abgeleitet werden können.
Implementieren Sie die rollenbasierte Zugriffskontrolle (RBAC) im Template
Warten Sie nicht bis nach der Bereitstellung, um Berechtigungen zuzuweisen. Fügen Sie RBAC-Zuweisungen direkt in Ihre ARM-Vorlage mit dem Ressourcentyp ein. Dadurch wird sichergestellt, dass jede Umgebung ab dem Zeitpunkt ihrer Erstellung die richtigen Berechtigungen erhält, wodurch das Fenster der Schwachstelle und der Overhead der Konfiguration nach der Bereitstellung reduziert werden.
Validieren mit What-If
Bevor Sie eine Bereitstellung ausführen, die vorhandene Ressourcen verändern könnte, verwenden Sie die Operation „Was-wäre-wenn ( oder ). Dies generiert eine Vorschau der Änderungen, die die Vorlage vornehmen wird – Ergänzungen, Modifikationen und Löschungen –, ohne sie anzuwenden.
Tags konsequent verwenden
Setzen Sie Tags auf jede Ressource in Ihrer Vorlage um Kostenverfolgung, Automatisierung und Ressourcenmanagement zu unterstützen. Definieren Sie einen Standardsatz von Tags (z. B. , , , ) und verwenden Sie Parameter, um sie weiterzugeben. Tags können auf Ressourcengruppenebene vererbt werden, aber explizites Tagging innerhalb der Vorlage bietet eine granularere Kontrolle.
Speichern von Vorlagen in der Source Control
Behandeln Sie ARM-Vorlagen als Anwendungscode. Bewahren Sie sie in einem Git-Repository mit den gleichen Verzweigungs-, Code-Review- und Teststandards auf, die für Software verwendet werden. Hosten Sie die Vorlagen an einem öffentlich zugänglichen Ort (z. B. einem GitHub-Repo oder Azure Storage-Blob), wenn Sie verknüpfte Vorlagen verwenden möchten, da Azure Resource Manager in der Lage sein muss, die referenzierten Dateien während der Bereitstellung herunterzuladen.
Fortgeschrittene Szenarien
Sobald Sie mit grundlegenden Bereitstellungen vertraut sind, sollten Sie diese fortschrittlichen Muster berücksichtigen, um die Automatisierung und Flexibilität weiter zu verbessern.
Verwenden von Azure Policy mit ARM Templates
Azure Policy kann Compliance-Regeln für alle Abonnements durchsetzen. Bei der Bereitstellung mit ARM-Vorlagen können Richtlinien bestimmte Ressourcenkonfigurationen ablehnen oder überprüfen. Entwerfen Sie Ihre Vorlagen so, dass sie richtlinienbewusst sind, beispielsweise durch Parametrierung von Ressourcen-SKUs, um sie an die in der Richtlinie festgelegten zulässigen Werte anzupassen. Diese Synergie verhindert fehlgeschlagene Bereitstellungen aufgrund von Richtlinienverstößen und stellt sicher, dass jede Bereitstellung die Anforderungen der Unternehmensführung erfüllt.
Integration mit Azure DevOps Pipelines
Eine vollständige CI/CD-Pipeline für Infrastrukturen kann mit Azure Pipelines erstellt werden, wobei die Pipelinephase typischerweise Folgendes umfassen würde:
- Holen Sie die neueste Vorlage von der Quellsteuerung
- Laufende Auskleidungs- und Validierungstests
- Bereitstellung in einer Entwicklungsumgebung mit Aufgabe
- Durchführung von Rauchtests oder Integrationstests gegen die eingesetzten Ressourcen
- Förderung der gleichen Vorlage für Staging und Produktion nach der Genehmigung
Speichern Sie umgebungsspezifische Parameterdateien in separaten Zweigen oder Variablengruppen, um die Vorlage selbst umgebungsunabhängig zu halten. Azure Key Vault kann integriert werden, um Geheimnisse während des Pipeline-Laufs sicher abzurufen.
Custom Script Extensions einbinden
Während ARM-Vorlagen die Bereitstellung von Ressourcen abdecken, müssen Sie häufig Konfigurationsskripte innerhalb einer VM ausführen, nachdem sie erstellt wurden. Die -Ressource, insbesondere die Custom Script Extension, ermöglicht es Ihnen, PowerShell- oder Bash-Skripte in die Vorlage einzubetten oder sie über URLs zu referenzieren. Dieses Muster wird zum Installieren von Software, zum Verbinden von Domänen oder zum Anpassen von Firewall-Regeln verwendet - alles Teil einer einzigen, idempotenten Bereitstellung.
Bereitstellung ganzer Umgebungen mit Blueprints
Azure Blueprints erweitert das Konzept von ARM-Vorlagen, indem Richtlinien, Rollenzuweisungen und Ressourcengruppen in einem einzigen, wiederholbaren Artefakt gebündelt werden. Für Bereitstellungen im Unternehmensmaßstab, wie z. B. das Erstellen eines neuen Abonnements mit einer standardisierten Governance-Baseline, bieten Blueprints eine übergeordnete Abstraktion, die ARM-Vorlagen als eine Komponente enthält. Dies ist besonders nützlich, wenn neue Projekte oder Geschäftseinheiten integriert werden.
Häufige Fallstricke und wie man sie vermeidet
Selbst erfahrene Ingenieure stoßen auf Probleme mit ARM-Vorlagen. Wenn man sich dieser häufigen Schmerzpunkte bewusst ist, kann dies stundenlange Fehlersuche ersparen.
- Hard-coded names that clash with existing resources. Always use or a names convention with a randomized suffix.
- Falsche API-Versionen verursachen Bereitstellungsfehler oder fehlende Eigenschaften. Pinnen Sie die API-Version an ein bestimmtes Release, das Sie getestet haben, und aktualisieren Sie es erst nach Überprüfung der Release-Notizen.
- Zirkulare Abhängigkeiten zwischen Ressourcen. ARM-Vorlagen unterstützen nur Vorwärtsabhängigkeiten; Sie können nicht Ressourcen A von B und B von A abhängig machen. Refactor Ihre Ressourcen, um den Zyklus zu unterbrechen.
- Überblicken von Ressourcenlimits, wie Abonnementquoten oder regionalspezifische SKU-Verfügbarkeit.Validieren Sie Quoten vor der Bereitstellung und verwenden Sie -Ausdrücke, um Ressourcen zu überspringen, wenn die Limits überschritten werden.
- Vermischt die Bereitstellungsmodi versehentlich. Wenn Sie den -Modus für eine Ressourcengruppe verwenden, die Ressourcen enthält, die nicht in der Vorlage definiert sind, werden diese Ressourcen gelöscht.
Schlussfolgerung
Azure ARM-Vorlagen sind ein grundlegendes Werkzeug für alle, die Cloud-Infrastruktur in Microsoft Azure verwalten. Sie ermöglichen konsistente, automatisierte und überprüfbare Bereitstellungen, die von einer einzelnen virtuellen Maschine zu einem globalen, mehrstufigen Anwendungsnetzwerk skaliert werden können. Durch die Beherrschung der Vorlagenstruktur, Bereitstellungsmethoden und erweiterten Muster wie verknüpfte Vorlagen, CI / CD-Integration und benutzerdefinierte Erweiterungen können Teams ein Niveau an Betriebseffizienz erreichen, das manuelle Bereitstellung niemals erreichen kann.
Der Weg zu voller Infrastructure-as-Code findet nicht über Nacht statt. Klein anfangen: eine vorhandene Ressourcengruppe als Vorlage exportieren, ihre Werte parametrieren und sie der Quellenkontrolle zuordnen. Schrittweise erweitern Sie Ihre Bibliothek mit wiederverwendbaren Modulen, integrieren Sie Validierung und Was-wäre-wenn-Analyse in Ihre Pipeline und übernehmen Sie deklarative Richtlinien neben Ihren Vorlagen. Mit jeder Iteration werden Ihre Cloud-Bereitstellungen schneller, zuverlässiger und einfacher zu verwalten.
Für weitere Informationen lesen Sie die offizielle ARM-Vorlagendokumentation und das Azure Quickstart Templates Repository, das Hunderte von Beispielen enthält, die von der Community bereitgestellt werden. Bei der Automatisierung geht es nicht nur darum, manuelle Arbeit zu vermeiden - es geht darum, eine Grundlage für Innovationen zu schaffen, die mit den Anforderungen moderner Software-Bereitstellung Schritt halten kann.