Was sind ARM-Vorlagen?What are ARM templates?

Mit dem Wechsel zur Cloud haben viele Teams agile Entwicklungsmethoden eingeführt.With the move to the cloud, many teams have adopted agile development methods. Diese Teams führen schnelle Iterationen durch.These teams iterate quickly. Sie müssen ihre Lösungen wiederholt in der Cloud bereitstellen und sicher sein, dass sich ihre Infrastruktur in einem zuverlässigen Zustand befindet.They need to repeatedly deploy their solutions to the cloud, and know their infrastructure is in a reliable state. Da die Infrastruktur Teil des iterativen Prozesses geworden ist, gibt es keine Trennung mehr zwischen Betrieb und Entwicklung.As infrastructure has become part of the iterative process, the division between operations and development has disappeared. Die Teams müssen Infrastruktur und Anwendungscode in einem einheitlichen Prozess verwalten.Teams need to manage infrastructure and application code through a unified process.

Um diese Herausforderungen zu erfüllen, können Bereitstellungen automatisiert und die Infrastructure-as-Code-Methode verwendet werden.To meet these challenges, you can automate deployments and use the practice of infrastructure as code. Im Code definieren Sie die Infrastruktur, die bereitgestellt werden muss.In code, you define the infrastructure that needs to be deployed. Der Infrastrukturcode wird Teil des Projekts.The infrastructure code becomes part of your project. Genau wie Anwendungscode speichern Sie den Infrastrukturcode in einem Quellrepository und versionieren ihn.Just like application code, you store the infrastructure code in a source repository and version it. Jeder in Ihrem Team kann den Code ausführen und ähnliche Umgebungen bereitstellen.Any one on your team can run the code and deploy similar environments.

Verwenden Sie Azure Resource Manager-Vorlagen (ARM), um Infrastructure-as-Code für Ihre Azure-Lösungen zu implementieren.To implement infrastructure as code for your Azure solutions, use Azure Resource Manager (ARM) templates. Die Vorlage ist eine JSON-Datei (JavaScript Object Notation), in der die Infrastruktur und die Konfiguration für Ihr Projekt definiert sind.The template is a JavaScript Object Notation (JSON) file that defines the infrastructure and configuration for your project. Für die Vorlage wird deklarative Syntax verwendet. Hiermit können Sie angeben, was Sie bereitstellen möchten, ohne dass Sie die Folge der Programmierbefehle für die Erstellung schreiben müssen.The template uses declarative syntax, which lets you state what you intend to deploy without having to write the sequence of programming commands to create it. In der Vorlage geben Sie die bereitzustellenden Ressourcen und die Eigenschaften für diese Ressourcen an.In the template, you specify the resources to deploy and the properties for those resources.

Warum ARM-Vorlagen verwenden?Why choose ARM templates?

Bei der Entscheidung zwischen ARM-Vorlagen und einem der anderen Infrastructure-as-Code-Dienste sollten Sie die folgenden Vorteile von Vorlagen berücksichtigen:If you're trying to decide between using ARM templates and one of the other infrastructure as code services, consider the following advantages of using templates:

  • Deklarative Syntax: Mit ARM-Vorlagen können Sie eine gesamte Azure-Infrastruktur deklarativ erstellen und bereitstellen.Declarative syntax: ARM templates allow you to create and deploy an entire Azure infrastructure declaratively. Sie können beispielsweise nicht nur virtuelle Computer bereitstellen, sondern auch die Netzwerkinfrastruktur, die Speichersysteme und alle anderen Ressourcen, die Sie möglicherweise benötigen.For example, you can deploy not only virtual machines, but also the network infrastructure, storage systems and any other resources you may need.

  • Wiederholbare Ergebnisse: Wiederholtes Bereitstellen Ihrer Infrastruktur während des gesamten Entwicklungslebenszyklus und Gewährleistung, dass Ihre Ressourcen einheitlich bereitgestellt werden.Repeatable results: Repeatedly deploy your infrastructure throughout the development lifecycle and have confidence your resources are deployed in a consistent manner. Vorlagen sind idempotent, d. h. Sie können dieselbe Vorlage mehrmals bereitstellen und erhalten immer dieselben Ressourcentypen im selben Zustand.Templates are idempotent, which means you can deploy the same template many times and get the same resource types in the same state. Sie können eine Vorlage entwickeln, die den gewünschten Zustand darstellt, anstatt viele separate Vorlagen zur Darstellung von Aktualisierungen zu entwickeln.You can develop one template that represents the desired state, rather than developing lots of separate templates to represent updates.

  • Orchestrierung: Sie müssen sich keine Gedanken über die Komplexität von Bestellvorgängen machen.Orchestration: You don't have to worry about the complexities of ordering operations. Resource Manager orchestriert die Bereitstellung voneinander abhängiger Ressourcen, sodass diese in der richtigen Reihenfolge erstellt werden.Resource Manager orchestrates the deployment of interdependent resources so they're created in the correct order. Wenn möglich, stellt der Resource Manager Ressourcen parallel bereit, sodass Ihre Bereitstellungen schneller abgeschlossen werden als serielle Bereitstellungen.When possible, Resource Manager deploys resources in parallel so your deployments finish faster than serial deployments. Sie stellen die Vorlage über einen Befehl statt über mehrere imperativer Befehle bereit.You deploy the template through one command, rather than through multiple imperative commands.

    Vergleich von Vorlagenbereitstellungen

  • Modulare Dateien: Sie können Ihre Vorlagen in kleinere, wiederverwendbare Komponenten unterteilen und sie zum Zeitpunkt der Bereitstellung miteinander verknüpfen.Modular files: You can break your templates into smaller, reusable components and link them together at deployment time. Sie können eine Vorlage auch in anderen Vorlagen schachteln.You can also nest one template inside another templates.

  • Erstellen jeder Azure-Ressource: Sie können neue Azure-Dienste und -Features sofort in Vorlagen verwenden.Create any Azure resource: You can immediately use new Azure services and features in templates. Sobald ein Ressourcenanbieter neue Ressourcen einführt, können Sie diese Ressourcen mithilfe von Vorlagen bereitstellen.As soon as a resource provider introduces new resources, you can deploy those resources through templates. Sie müssen nicht warten, bis Tools oder Module aktualisiert werden, bevor Sie die neuen Dienste verwenden.You don't have to wait for tools or modules to be updated before using the new services.

  • Erweiterbarkeit: Mit Bereitstellungsskripts können Sie Ihren Vorlagen PowerShell- oder Bash-Skripts hinzufügen.Extensibility: With deployment scripts, you can add PowerShell or Bash scripts to your templates. Die Bereitstellungsskripts erweitern die Möglichkeiten zum Einrichten von Ressourcen während der Bereitstellung.The deployment scripts extend your ability to set up resources during deployment. Ein Skript kann in die Vorlage eingeschlossen werden oder in einer externen Quelle gespeichert und in der Vorlage referenziert werden.A script can be included in the template, or stored in an external source and referenced in the template. Mit Bereitstellungsskripts haben Sie die Möglichkeit, die Einrichtung der End-to-End-Umgebung in einer einzelnen ARM-Vorlage abzuschließen.Deployment scripts give you the ability to complete your end-to-end environment setup in a single ARM template.

  • Testen: Sie können sicherstellen, dass Ihre Vorlage den empfohlenen Richtlinien entspricht, indem Sie sie mit dem ARM-Vorlagentoolkit (arm-ttk) testen.Testing: You can make sure your template follows recommended guidelines by testing it with the ARM template tool kit (arm-ttk). Dieses Testkit ist ein PowerShell-Skript, das Sie von GitHub herunterladen können.This test kit is a PowerShell script that you can download from GitHub. Das Toolkit erleichtert Ihnen das Erlangen von Kenntnissen mithilfe der Vorlagensprache.The tool kit makes it easier for you to develop expertise using the template language.

  • Vorschau der Änderungen: Sie können den Was-wäre-wenn-Vorgang verwenden, um vor der Bereitstellung der Vorlage eine Vorschau der Änderungen anzuzeigen.Preview changes: You can use the what-if operation to get a preview of changes before deploying the template. Mit Was-wäre-wenn können Sie feststellen, welche Ressourcen erstellt, aktualisiert oder gelöscht und welche Ressourceneigenschaften geändert werden.With what-if, you see which resources will be created, updated, or deleted, and any resource properties that will change. Der Was-wäre-wenn-Vorgang überprüft den aktuellen Zustand Ihrer Umgebung, sodass Sie diesen nicht verwalten müssen.The what-if operation checks the current state of your environment and eliminates the need to manage state.

  • Integrierte Überprüfung: Ihre Vorlage wird erst bereitgestellt, wenn sie die Überprüfung bestanden hat.Built-in validation: Your template is deployed only after passing validation. Resource Manager überprüft die Vorlage vor Beginn der Bereitstellung, um sicherzustellen, dass die Bereitstellung erfolgreich sein wird.Resource Manager checks the template before starting the deployment to make sure the deployment will succeed. Es ist weniger wahrscheinlich, dass die Bereitstellung in einem halbfertigen Zustand beendet wird.Your deployment is less likely to stop in a half-finished state.

  • Nachverfolgte Bereitstellungen: Im Azure-Portal können Sie den Bereitstellungsverlauf überprüfen und Informationen zur Vorlagenbereitstellung abrufen.Tracked deployments: In the Azure portal, you can review the deployment history and get information about the template deployment. Sie können die bereitgestellte Vorlage, die übergebenen Parameterwerte und die Ausgabewerte anzeigen.You can see the template that was deployed, the parameter values passed in, and any output values. Andere Infrastructure-as-Code-Dienste werden nicht über das Portal nachverfolgt.Other infrastructure as code services aren't tracked through the portal.

    Bereitstellungsverlauf

  • Richtlinie als Code: Azure Policy ist eine Richtlinie in Form eines Codeframeworks zum Automatisieren der Governance.Policy as code: Azure Policy is a policy as code framework to automate governance. Wenn Sie Azure-Richtlinien verwenden, erfolgt die Richtlinienwartung für nicht kompatible Ressourcen bei der Bereitstellung über Vorlagen.If you're using Azure policies, policy remediation is done on non-compliant resources when deployed through templates.

  • Bereitstellungsblaupausen: Sie können von Microsoft bereitgestellte Blaupausen nutzen, um gesetzliche Vorgaben und Konformitätsstandards einzuhalten.Deployment Blueprints: You can take advantage of Blueprints provided by Microsoft to meet regulatory and compliance standards. Diese Blaupausen umfassen vorgefertigte Vorlagen für verschiedene Architekturen.These blueprints include pre-built templates for various architectures.

  • CI/CD-Integration: Sie können Vorlagen in ihre Tools für Continuous Integration und Continuous Deployment (CI/CD) integrieren, die Ihre Releasepipelines für schnelle und zuverlässige Updates von Anwendungen und Infrastrukturen automatisieren können.CI/CD integration: You can integrate templates into your continuous integration and continuous deployment (CI/CD) tools, which can automate your release pipelines for fast and reliable application and infrastructure updates. Wenn Sie die Azure DevOps- und Resource Manager-Vorlagenaufgaben verwenden, können Sie Azure-Pipelines zum kontinuierlichen Erstellen und Bereitstellen von ARM-Vorlagenprojekten verwenden.By using Azure DevOps and Resource Manager template task, you can use Azure Pipelines to continuously build and deploy ARM template projects. Weitere Informationen finden Sie unter VS-Projekte mit Pipelines und Tutorial: Continuous Integration von Azure Resource Manager-Vorlagen mit Azure Pipelines.To learn more, see VS project with pipelines and Tutorial: Continuous integration of Azure Resource Manager templates with Azure Pipelines.

  • Exportierbarer Code: Sie können eine Vorlage für eine vorhandene Ressourcengruppe abrufen, indem Sie entweder den aktuellen Zustand der Ressourcengruppe exportieren oder die Vorlage anzeigen, die für eine bestimmte Bereitstellung verwendet wurde.Exportable code: You can get a template for an existing resource group by either exporting the current state of the resource group, or viewing the template used for a particular deployment. Das Anzeigen der exportierten Vorlage ist hilfreich, um sich über die Vorlagensyntax zu informieren.Viewing the exported template is a helpful way to learn about the template syntax.

  • Dokumenterstellungstools: Sie können Vorlagen mit Visual Studio Code und der Vorlagentoolerweiterung erstellen.Authoring tools: You can author templates with Visual Studio Code and the template tool extension. IntelliSense, Syntaxhervorhebung, Inlinehilfe und viele andere Sprachfunktionen stehen Ihnen zur Verfügung.You get intellisense, syntax highlighting, in-line help, and many other language functions. Zusätzlich zu Visual Studio Code können Sie auch Visual Studio verwenden.In addition to Visual Studio code, you can also use Visual Studio.

VorlagendateiTemplate file

Innerhalb Ihrer Vorlage können Sie Vorlagenausdrücke schreiben, mit denen die Funktionen von JSON erweitert werden.Within your template, you can write template expressions that extend the capabilities of JSON. Diese Ausdrücke verwenden die von Resource Manager bereitgestellten Funktionen.These expressions make use of the functions provided by Resource Manager.

Die Vorlage hat die folgenden Abschnitte:The template has the following sections:

  • Parameter: Angeben von Werten während der Bereitstellung, mit denen dieselbe Vorlage für verschiedene Umgebungen verwendet werden kann.Parameters - Provide values during deployment that allow the same template to be used with different environments.

  • Variablen: Definieren von Werten, die in Ihren Vorlagen wiederverwendet werden.Variables - Define values that are reused in your templates. Diese können aus Parameterwerten erstellt werden.They can be constructed from parameter values.

  • Benutzerdefinierte Funktionen: Erstellen angepasster Funktionen zum Vereinfachen Ihrer Vorlage.User-defined functions - Create customized functions that simplify your template.

  • Ressourcen: Angeben der bereitzustellenden Ressourcen.Resources - Specify the resources to deploy.

  • Ausgaben: Zurückgeben von Werte aus den bereitgestellten Ressourcen.Outputs - Return values from the deployed resources.

Prozess für die VorlagenbereitstellungTemplate deployment process

Wenn Sie eine Vorlage bereitstellen, konvertiert Resource Manager die Vorlage in REST-API-Vorgänge.When you deploy a template, Resource Manager converts the template into REST API operations. Beispielsweise kann der Resource Manager eine Vorlage mit der folgenden Ressourcendefinition empfangen:For example, when Resource Manager receives a template with the following resource definition:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2016-01-01",
    "name": "mystorageaccount",
    "location": "westus",
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "Storage",
    "properties": {}
  }
]

Er konvertiert die Definition in den folgenden REST-API-Vorgang, der an den Microsoft.Storage-Ressourcenanbieter gesendet wird:It converts the definition to the following REST API operation, which is sent to the Microsoft.Storage resource provider:

PUT
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/mystorageaccount?api-version=2016-01-01
REQUEST BODY
{
  "location": "westus",
  "sku": {
    "name": "Standard_LRS"
  },
  "kind": "Storage",
  "properties": {}
}

VorlagenentwurfTemplate design

Sie können völlig frei entscheiden, wie Sie Vorlagen und Ressourcengruppen definieren und Ihre Lösung verwalten möchten.How you define templates and resource groups is entirely up to you and how you want to manage your solution. Beispielsweise können Sie Ihre Anwendung mit drei Ebenen über eine einzelne Vorlage für eine einzelne Ressourcengruppe bereitstellen.For example, you can deploy your three tier application through a single template to a single resource group.

Vorlage mit drei Ebenen

Sie müssen aber nicht die gesamte Infrastruktur in einer einzelnen Vorlage definieren.But, you don't have to define your entire infrastructure in a single template. Oftmals ist es sinnvoll, die Bereitstellungsanforderungen in eine Gruppe von spezifischen, zweckgebundenen Vorlagen zu unterteilen.Often, it makes sense to divide your deployment requirements into a set of targeted, purpose-specific templates. Sie können diese Vorlagen mühelos für verschiedene Lösungen erneut verwenden.You can easily reuse these templates for different solutions. Um eine bestimmte Lösung bereitzustellen, erstellen Sie eine Mastervorlage, die alle erforderlichen Vorlagen verknüpft.To deploy a particular solution, you create a master template that links all the required templates. Die folgende Abbildung zeigt, wie Sie eine Lösung mit drei Ebenen über eine übergeordnete Vorlage bereitstellen, die drei geschachtelte Vorlagen enthält.The following image shows how to deploy a three tier solution through a parent template that includes three nested templates.

Vorlage mit geschachtelten Ebenen

Wenn Ihre Ebenen über separate Lebenszyklen verfügen sollen, können Sie die drei Ebenen in separaten Ressourcengruppen bereitstellen.If you envision your tiers having separate lifecycles, you can deploy your three tiers to separate resource groups. Beachten Sie, dass die Ressourcen weiterhin mit Ressourcen in anderen Ressourcengruppen verknüpft werden können.Notice the resources can still be linked to resources in other resource groups.

Ebenenvorlage

Informationen zu geschachtelten Vorlagen finden Sie unter Verwenden von verknüpften Vorlagen mit Azure Resource Manager.For information about nested templates, see Using linked templates with Azure Resource Manager.

Nächste SchritteNext steps