Verstehen der Struktur und Syntax von ARM-VorlagenUnderstand the structure and syntax of ARM templates

In diesem Artikel wird die Struktur einer Azure Resource Manager-Vorlage (ARM-Vorlage) beschrieben.This article describes the structure of an Azure Resource Manager template (ARM template). Er zeigt die verschiedenen Abschnitte einer Vorlage und die Eigenschaften, die in diesen Abschnitten verfügbar sind.It presents the different sections of a template and the properties that are available in those sections.

Dieser Artikel richtet sich an Benutzer, die bereits Vorkenntnisse zu ARM-Vorlagen haben.This article is intended for users who have some familiarity with ARM templates. Er bietet detaillierte Informationen zur Struktur der Vorlage.It provides detailed information about the structure of the template. Ein Schritt-für-Schritt-Tutorial mit Anleitungen zum Erstellen einer Vorlage finden Sie unter Tutorial: Erstellen und Bereitstellen Ihrer ersten ARM-Vorlage.For a step-by-step tutorial that guides you through the process of creating a template, see Tutorial: Create and deploy your first ARM template. Informationen zu ARM-Vorlagen durch einen Satz anleitender Module auf Microsoft Learn finden Sie unter Bereitstellen und Verwalten von Ressourcen in Azure mithilfe von ARM-Vorlagen.To learn about ARM templates through a guided set of modules on Microsoft Learn, see Deploy and manage resources in Azure by using ARM templates.

VorlagenformatTemplate format

In der einfachsten Struktur weist eine Vorlage die folgenden Elemente auf:In its simplest structure, a template has the following elements:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "",
  "apiProfile": "",
  "parameters": {  },
  "variables": {  },
  "functions": [  ],
  "resources": [  ],
  "outputs": {  }
}
ElementnameElement name ErforderlichRequired BESCHREIBUNGDescription
$schema$schema JaYes Speicherort der JSON-Schemadatei (JavaScript Object Notation), die die Version der Vorlagensprache beschreibt.Location of the JavaScript Object Notation (JSON) schema file that describes the version of the template language. Die von Ihnen verwendete Versionsnummer hängt vom Umfang der Bereitstellung und vom JSON-Editor ab.The version number you use depends on the scope of the deployment and your JSON editor.

Wenn Sie Visual Studio Code mit der Erweiterung für Azure Resource Manager-Tools nutzen, verwenden Sie die aktuelle Version für Bereitstellungen von Ressourcengruppen:If you're using Visual Studio Code with the Azure Resource Manager tools extension, use the latest version for resource group deployments:
https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#

Andere Editoren (einschließlich Visual Studio) können dieses Schema unter Umständen nicht verarbeiten.Other editors (including Visual Studio) may not be able to process this schema. Verwenden Sie für diese Editoren Folgendes:For those editors, use:
https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#

Verwenden Sie Folgendes für Bereitstellungen von Abonnements:For subscription deployments, use:
https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#

Verwenden Sie für Bereitstellungen von Verwaltungsgruppen Folgendes:For management group deployments, use:
https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#

Verwenden Sie für Bereitstellungen von Mandanten Folgendes:For tenant deployments, use:
https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#
contentVersioncontentVersion JaYes Version der Vorlage (z. B. 1.0.0.0).Version of the template (such as 1.0.0.0). Sie können einen beliebigen Wert für dieses Element resources.You can provide any value for this element. Mit diesem Wert können Sie wichtige Änderungen in der Vorlage dokumentieren.Use this value to document significant changes in your template. Bei der Bereitstellung von Ressourcen mithilfe der Vorlage kann mit diesem Wert sichergestellt werden, dass die richtige Vorlage verwendet wird.When deploying resources using the template, this value can be used to make sure that the right template is being used.
apiProfileapiProfile NeinNo Eine API-Version, die als Sammlung von API-Versionen für Ressourcentypen dient.An API version that serves as a collection of API versions for resource types. Verwenden Sie diesen Wert, um zu vermeiden, dass Sie API-Versionen für jede Ressource in der Vorlage angeben müssen.Use this value to avoid having to specify API versions for each resource in the template. Wenn Sie eine API-Profilversion aber keine API-Version für den Ressourcentyp angeben, verwendet Resource Manager die API-Version für diesen Ressourcentyp, der im Profil bestimmt wurde.When you specify an API profile version and don't specify an API version for the resource type, Resource Manager uses the API version for that resource type that is defined in the profile.

Die API-Profileigenschaft ist besonders hilfreich, wenn Sie eine Vorlage in verschiedenen Umgebungen wie Azure Stack und der globalen Azure-Umgebung bereitstellen.The API profile property is especially helpful when deploying a template to different environments, such as Azure Stack and global Azure. Verwenden Sie die API-Profilversion, um sicherzustellen, dass Ihre Vorlage automatisch Versionen verwendet, die in beiden Umgebungen unterstützt werden.Use the API profile version to make sure your template automatically uses versions that are supported in both environments. Eine Liste der im Profil definierten aktuellen API-Profilversionen und Ressourcen-API-Versionen finden Sie unter API Profile (API-Profil).For a list of the current API profile versions and the resources API versions defined in the profile, see API Profile.

Weitere Informationen finden Sie unter Nachverfolgen von Versionen mithilfe von API-Profilen.For more information, see Track versions using API profiles.
parametersparameters NeinNo Werte, die bei der Bereitstellung angegeben werden, um die Bereitstellung der Ressourcen anpassen.Values that are provided when deployment is executed to customize resource deployment.
variablesvariables NeinNo Werte, die als JSON-Fragmente in der Vorlage verwendet werden, um Vorlagensprachausdrücke zu vereinfachen.Values that are used as JSON fragments in the template to simplify template language expressions.
functionsfunctions NeinNo Benutzerdefinierte Funktionen, die in der Vorlage verfügbar sind.User-defined functions that are available within the template.
resourcesresources JaYes Ressourcentypen, die in einer Ressourcengruppe oder einem Abonnement bereitgestellt oder aktualisiert werden.Resource types that are deployed or updated in a resource group or subscription.
outputsoutputs NeinNo Werte, die nach der Bereitstellung zurückgegeben werden.Values that are returned after deployment.

Jedes Element weist Eigenschaften auf, die Sie festlegen können.Each element has properties you can set. In diesem Artikel werden die Abschnitte der Vorlage ausführlicher beschrieben.This article describes the sections of the template in greater detail.

DatentypenData types

In einer ARM-Vorlage können Sie die folgenden Datentypen verwenden:Within an ARM template, you can use these data types:

  • Zeichenfolgestring
  • securestringsecurestring
  • INTint
  • boolbool
  • objectobject
  • secureObjectsecureObject
  • arrayarray

Die folgende Vorlage zeigt das Format für die Datentypen.The following template shows the format for the data types. Jeder Typ verfügt über einen Standardwert im richtigen Format.Each type has a default value in the correct format.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "stringParameter": {
      "type": "string",
      "defaultValue": "option 1"
    },
    "intParameter": {
      "type": "int",
      "defaultValue": 1
    },
    "boolParameter": {
        "type": "bool",
        "defaultValue": true
    },
    "objectParameter": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b"
      }
    },
    "arrayParameter": {
      "type": "array",
      "defaultValue": [ 1, 2, 3 ]
    }
  },
  "resources": [],
  "outputs": {}
}

Die sichere Zeichenfolge verwendet das gleiche Format wie die Zeichenfolge, und das sichere Objekt verwendet das gleiche Format wie das Objekt.Secure string uses the same format as string, and secure object uses the same format as object. Wenn Sie einen Parameter auf eine sichere Zeichenfolge oder ein sicheres Objekt festlegen, wird der Wert des-Parameters weder im Bereitstellungsverlauf gespeichert noch protokolliert.When you set a parameter to a secure string or secure object, the value of the parameter isn't saved to the deployment history and isn't logged. Wenn Sie diesen sicheren Wert jedoch auf eine Eigenschaft festlegen, die keinen sicheren Wert erwartet, wird der Wert nicht geschützt.However, if you set that secure value to a property that isn't expecting a secure value, the value isn't protected. Wenn Sie z. B. eine sichere Zeichenfolge auf ein Tag festlegen, wird dieser Wert als reiner Text gespeichert.For example, if you set a secure string to a tag, that value is stored as plain text. Verwenden Sie sichere Zeichenfolgen für Kennwörter und Geheimnisse.Use secure strings for passwords and secrets.

Für Integer, die als Inlineparameter übergeben werden, ist der Wertebereich möglicherweise durch das SDK oder Befehlszeilentool, das Sie zur Bereitstellung verwenden, eingeschränkt.For integers passed as inline parameters, the range of values may be limited by the SDK or command-line tool you use for deployment. Wenn Sie beispielsweise PowerShell zum Bereitstellen einer Vorlage verwenden, können Integertypen im Bereich von -2147483648 bis 2147483647 liegen.For example, when using PowerShell to deploy a template, integer types can range from -2147483648 to 2147483647. Um diese Einschränkung zu vermeiden, geben Sie große Werte in einer Parameterdatei an.To avoid this limitation, specify large integer values in a parameter file. Ressourcentypen wenden ihre eigenen Grenzwerte für Integereigenschaften an.Resource types apply their own limits for integer properties.

Schließen Sie Boolesche und Integerwerte in Ihrer Vorlage nicht in Anführungszeichen ein.When specifying boolean and integer values in your template, don't surround the value with quotation marks. Beginnen und beenden Sie Zeichenfolgenwerte mit doppelten Anführungszeichen ("string value").Start and end string values with double quotation marks ("string value").

Objekte beginnen mit einer linken geschweiften Klammer ({) und enden mit einer rechten geschweiften Klammer (}).Objects start with a left brace ({) and end with a right brace (}). Arrays beginnen mit einer linken eckigen Klammer ([) und enden mit einer rechten eckigen Klammer (]).Arrays start with a left bracket ([) and end with a right bracket (]).

ParameterParameters

Im Abschnitt parameters der Vorlage geben Sie an, welche Werte Sie beim Bereitstellen der Ressourcen eingeben können.In the parameters section of the template, you specify which values you can input when deploying the resources. Die Anzahl der Parameter in einer Vorlage ist auf 256 beschränkt.You're limited to 256 parameters in a template. Sie können die Anzahl der Parameter verringern, indem Sie Objekte verwenden, die mehrere Eigenschaften enthalten.You can reduce the number of parameters by using objects that contain multiple properties.

Folgende Eigenschaften sind für einen Parameter verfügbar:The available properties for a parameter are:

"parameters": {
  "<parameter-name>" : {
    "type" : "<type-of-parameter-value>",
    "defaultValue": "<default-value-of-parameter>",
    "allowedValues": [ "<array-of-allowed-values>" ],
    "minValue": <minimum-value-for-int>,
    "maxValue": <maximum-value-for-int>,
    "minLength": <minimum-length-for-string-or-array>,
    "maxLength": <maximum-length-for-string-or-array-parameters>,
    "metadata": {
      "description": "<description-of-the parameter>"
    }
  }
}
ElementnameElement name ErforderlichRequired BESCHREIBUNGDescription
parameter-nameparameter-name JaYes Der Name des Parameters.Name of the parameter. Es muss sich um einen gültigen JavaScript-Bezeichner handeln.Must be a valid JavaScript identifier.
typetype JaYes Der Typ des Parameterwerts.Type of the parameter value. Die zulässigen Typen und Werte sind string, securestring, int, bool, object, secureObject und array.The allowed types and values are string, securestring, int, bool, object, secureObject, and array. Siehe Datentypen.See Data types.
defaultValuedefaultValue NeinNo Der Standardwert für den Parameter, wenn kein Wert für den Parameter angegeben wird.Default value for the parameter, if no value is provided for the parameter.
allowedValuesallowedValues NeinNo Ein Array der zulässigen Werte für den Parameter, um sicherzustellen, dass der richtige Wert angegeben wird.Array of allowed values for the parameter to make sure that the right value is provided.
minValueminValue NeinNo Der Mindestwert für Parameter vom Typ "int", einschließlich des angegebenen Werts.The minimum value for int type parameters, this value is inclusive.
maxValuemaxValue NeinNo Der Höchstwert für Parameter vom Typ "int", einschließlich des angegebenen Werts.The maximum value for int type parameters, this value is inclusive.
minLengthminLength NeinNo Die Mindestlänge der Parameter „string“, „securestring“ und „array“, einschließlich des angegebenen Werts.The minimum length for string, secure string, and array type parameters, this value is inclusive.
maxLengthmaxLength NeinNo Die Höchstlänge der Parameter „string“, „securestring“ und „array“, einschließlich des angegebenen Werts.The maximum length for string, secure string, and array type parameters, this value is inclusive.
descriptiondescription NeinNo Beschreibung des Parameters, der Benutzern im Portal angezeigt wird.Description of the parameter that is displayed to users through the portal. Weitere Informationen finden Sie unter Kommentare in Vorlagen.For more information, see Comments in templates.

Beispiele für die Verwendung von Parametern finden Sie unter Parameter in ARM-Vorlagen.For examples of how to use parameters, see Parameters in ARM templates.

VariablesVariables

Im Abschnitt variables erstellen Sie Werte, die in der gesamten Vorlage verwendet werden können.In the variables section, you construct values that can be used throughout your template. Sie müssen nicht unbedingt Variablen definieren, aber häufig bewirken sie eine Vereinfachung Ihrer Vorlage, indem komplexe Ausdrücke reduziert werden.You don't need to define variables, but they often simplify your template by reducing complex expressions. Das Format der einzelnen Variablen entspricht einem der Datentypen.The format of each variable matches one of the data types.

Im folgenden Beispiel werden die verfügbaren Optionen zum Definieren einer Variable angezeigt:The following example shows the available options for defining a variable:

"variables": {
  "<variable-name>": "<variable-value>",
  "<variable-name>": {
    <variable-complex-type-value>
  },
  "<variable-object-name>": {
    "copy": [
      {
        "name": "<name-of-array-property>",
        "count": <number-of-iterations>,
        "input": <object-or-value-to-repeat>
      }
    ]
  },
  "copy": [
    {
      "name": "<variable-array-name>",
      "count": <number-of-iterations>,
      "input": <object-or-value-to-repeat>
    }
  ]
}

Informationen zur Verwendung von copy zum Erstellen mehrerer Werte für eine Variable finden Sie unter Variableniteration.For information about using copy to create several values for a variable, see Variable iteration.

Beispiele für die Verwendung von Variablen finden Sie unter Variablen in einer ARM-Vorlage.For examples of how to use variables, see Variables in ARM template.

FunctionsFunctions

In Ihrer Vorlage können Sie Ihre eigenen Funktionen erstellen.Within your template, you can create your own functions. Diese Funktionen stehen dann zur Verwendung in der Vorlage zur Verfügung.These functions are available for use in your template. Normalerweise definieren Sie komplexe Ausdrücke, die in der Vorlage nicht wiederholt werden sollen.Typically, you define complicated expressions that you don't want to repeat throughout your template. Sie erstellen die benutzerdefinierten Funktionen aus Ausdrücken und Funktionen, die in Vorlagen unterstützt werden.You create the user-defined functions from expressions and functions that are supported in templates.

Beim Definieren einer benutzerdefinierten Funktion gelten einige Einschränkungen:When defining a user function, there are some restrictions:

  • Die Funktion kann nicht auf Variablen zugreifen.The function can't access variables.
  • Die Funktion kann nur Parameter verwenden, die in der Funktion definiert sind.The function can only use parameters that are defined in the function. Bei Verwendung der parameters-Funktion innerhalb einer benutzerdefinierten Funktion sind Sie auf die Parameter für diese Funktion beschränkt.When you use the parameters function within a user-defined function, you're restricted to the parameters for that function.
  • Die Funktion kann keine anderen benutzerdefinierten Funktionen aufrufen.The function can't call other user-defined functions.
  • Die Funktion kann nicht die Referenzfunktion verwenden.The function can't use the reference function.
  • Für die Parameter der Funktion können keine Standardwerte verwendet werden.Parameters for the function can't have default values.
"functions": [
  {
    "namespace": "<namespace-for-functions>",
    "members": {
      "<function-name>": {
        "parameters": [
          {
            "name": "<parameter-name>",
            "type": "<type-of-parameter-value>"
          }
        ],
        "output": {
          "type": "<type-of-output-value>",
          "value": "<function-return-value>"
        }
      }
    }
  }
],
ElementnameElement name ErforderlichRequired BESCHREIBUNGDescription
Namespacenamespace JaYes Namespace für die benutzerdefinierten Funktionen.Namespace for the custom functions. Damit können Sie Namenskonflikte mit Vorlagenfunktionen vermeiden.Use to avoid naming conflicts with template functions.
function-namefunction-name JaYes Name der benutzerdefinierten Funktion.Name of the custom function. Wenn Sie die Funktion aufrufen, kombinieren Sie den Funktionsnamen mit dem Namespace.When calling the function, combine the function name with the namespace. Verwenden Sie z. B. "[contoso.uniqueName()]", um eine Funktion namens uniqueName im Namespace „contoso“ aufzurufen.For example, to call a function named uniqueName in the namespace contoso, use "[contoso.uniqueName()]".
parameter-nameparameter-name NeinNo Name des Parameters, der in der benutzerdefinierten Funktion verwendet werden sollName of the parameter to be used within the custom function.
parameter-valueparameter-value NeinNo Der Typ des Parameterwerts.Type of the parameter value. Die zulässigen Typen und Werte sind string, securestring, int, bool, object, secureObject und array.The allowed types and values are string, securestring, int, bool, object, secureObject, and array.
output-typeoutput-type JaYes Der Typ des Ausgabewerts.Type of the output value. Ausgabewerte unterstützen dieselben Typen wie die Eingabeparameter der Funktion.Output values support the same types as function input parameters.
output-valueoutput-value JaYes Vorlagensprachausdruck, der ausgewertet und von der Funktion zurückgegeben wirdTemplate language expression that is evaluated and returned from the function.

Beispiele für die Verwendung von benutzerdefinierten Funktionen finden Sie unter Benutzerdefinierte Funktionen in einer ARM-Vorlage.For examples of how to use custom functions, see User-defined functions in ARM template.

RessourcenResources

Im Abschnitt resources definieren Sie die Ressourcen, die bereitgestellt oder aktualisiert werden.In the resources section, you define the resources that are deployed or updated.

Sie definieren Ressourcen mit der folgenden Struktur:You define resources with the following structure:

"resources": [
  {
      "condition": "<true-to-deploy-this-resource>",
      "type": "<resource-provider-namespace/resource-type-name>",
      "apiVersion": "<api-version-of-resource>",
      "name": "<name-of-the-resource>",
      "comments": "<your-reference-notes>",
      "location": "<location-of-resource>",
      "dependsOn": [
          "<array-of-related-resource-names>"
      ],
      "tags": {
          "<tag-name1>": "<tag-value1>",
          "<tag-name2>": "<tag-value2>"
      },
      "sku": {
          "name": "<sku-name>",
          "tier": "<sku-tier>",
          "size": "<sku-size>",
          "family": "<sku-family>",
          "capacity": <sku-capacity>
      },
      "kind": "<type-of-resource>",
      "copy": {
          "name": "<name-of-copy-loop>",
          "count": <number-of-iterations>,
          "mode": "<serial-or-parallel>",
          "batchSize": <number-to-deploy-serially>
      },
      "plan": {
          "name": "<plan-name>",
          "promotionCode": "<plan-promotion-code>",
          "publisher": "<plan-publisher>",
          "product": "<plan-product>",
          "version": "<plan-version>"
      },
      "properties": {
          "<settings-for-the-resource>",
          "copy": [
              {
                  "name": ,
                  "count": ,
                  "input": {}
              }
          ]
      },
      "resources": [
          "<array-of-child-resources>"
      ]
  }
]
ElementnameElement name ErforderlichRequired BESCHREIBUNGDescription
conditioncondition NeinNo Boolescher Wert, der angibt, ob die Ressource während dieser Bereitstellung bereitgestellt wird.Boolean value that indicates whether the resource will be provisioned during this deployment. Wenn der Wert true lautet, wird die Ressource während der Bereitstellung erstellt.When true, the resource is created during deployment. Wenn der Wert false lautet, wird die Ressource für diese Bereitstellung ausgelassen.When false, the resource is skipped for this deployment. Weitere Informationen finden Sie unter Bedingung.See condition.
typetype JaYes Der Typ der Ressource.Type of the resource. Dieser Wert ist eine Kombination aus dem Namespace des Ressourcenanbieters und dem Ressourcentyp (z. B. Microsoft.Storage/storageAccounts).This value is a combination of the namespace of the resource provider and the resource type (such as Microsoft.Storage/storageAccounts). Informationen zum Bestimmen verfügbarer Werte finden Sie in der Vorlagenreferenz.To determine available values, see template reference. Für eine untergeordnete Ressource hängt das Format des Typs davon ab, ob sie innerhalb der übergeordneten Ressource geschachtelt oder außerhalb der übergeordneten Ressource definiert ist.For a child resource, the format of the type depends on whether it's nested within the parent resource or defined outside of the parent resource. Weitere Informationen finden Sie unter Festlegen von Name und Typ für untergeordnete Ressourcen.See Set name and type for child resources.
apiVersionapiVersion JaYes Version der REST-API zum Erstellen der Ressource.Version of the REST API to use for creating the resource. Wenn Sie eine neue Vorlage erstellen, legen Sie diesen Wert auf die neueste Version der Ressource fest, die Sie bereitstellen.When creating a new template, set this value to the latest version of the resource you're deploying. Solange die Vorlage wie erforderlich funktioniert, verwenden Sie weiterhin dieselbe API-Version.As long as the template works as needed, keep using the same API version. Indem Sie weiterhin dieselbe API-Version verwenden, minimieren Sie das Risiko, dass eine neue API-Version die Funktionsweise Ihrer Vorlage verändert.By continuing to use the same API version, you minimize the risk of a new API version changing how your template works. Ziehen Sie eine Aktualisierung der API-Version nur dann in Betracht, wenn Sie ein neues Feature verwenden möchten, das in einer späteren Version eingeführt wird.Consider updating the API version only when you want to use a new feature that is introduced in a later version. Informationen zum Bestimmen verfügbarer Werte finden Sie in der Vorlagenreferenz.To determine available values, see template reference.
namename JaYes Der Name der Ressource.Name of the resource. Der Name muss die Einschränkungen für URI-Komponenten laut Definition in RFC3986 erfüllen.The name must follow URI component restrictions defined in RFC3986. Azure-Dienste, die externen Parteien den Ressourcennamen verfügbar machen, überprüfen den Namen, um sicherzustellen, dass es sich nicht um einen Versuch handelt, eine andere Identität vorzutäuschen.Azure services that expose the resource name to outside parties validate the name to make sure it isn't an attempt to spoof another identity. Für eine untergeordnete Ressource hängt das Format des Namens davon ab, ob sie innerhalb der übergeordneten Ressource geschachtelt oder außerhalb der übergeordneten Ressource definiert ist.For a child resource, the format of the name depends on whether it's nested within the parent resource or defined outside of the parent resource. Weitere Informationen finden Sie unter Festlegen von Name und Typ für untergeordnete Ressourcen.See Set name and type for child resources.
commentscomments NeinNo Ihre Notizen zur Dokumentierung der Ressourcen in Ihrer Vorlage.Your notes for documenting the resources in your template. Weitere Informationen finden Sie unter Kommentare in Vorlagen.For more information, see Comments in templates.
locationlocation VariesVaries Unterstützte Standorte der angegebenen RessourceSupported geo-locations of the provided resource. Wählen Sie einen der verfügbaren Standorte. In der Regel ist es jedoch sinnvoll, einen in der Nähe der Benutzer zu wählen.You can select any of the available locations, but typically it makes sense to pick one that is close to your users. Normalerweise ist es auch sinnvoll, Ressourcen, die miteinander interagieren, in der gleichen Region zu platzieren.Usually, it also makes sense to place resources that interact with each other in the same region. Die meisten Ressourcentypen benötigen einen Speicherort, andere Typen (z.B. eine Rollenzuordnung) jedoch nicht.Most resource types require a location, but some types (such as a role assignment) don't require a location. Weitere Informationen finden Sie unter Festlegen des Ressourcenspeicherorts.See Set resource location.
dependsOndependsOn NeinNo Ressourcen, die bereitgestellt werden müssen, bevor diese Ressource bereitgestellt wird.Resources that must be deployed before this resource is deployed. Resource Manager wertet die Abhängigkeiten zwischen den Ressourcen aus und stellt sie in der richtigen Reihenfolge bereit.Resource Manager evaluates the dependencies between resources and deploys them in the correct order. Wenn Ressourcen nicht voneinander abhängig sind, werden sie parallel bereitgestellt.When resources aren't dependent on each other, they're deployed in parallel. Der Wert kann eine durch Trennzeichen getrennte Liste von Ressourcennamen oder eindeutigen Ressourcenbezeichnern sein.The value can be a comma-separated list of a resource names or resource unique identifiers. Es werden nur Ressourcen aufgelistet, die in dieser Vorlage bereitgestellt werden.Only list resources that are deployed in this template. Ressourcen, die nicht in dieser Vorlage definiert sind, müssen bereits vorhanden sein.Resources that aren't defined in this template must already exist. Vermeiden Sie das Hinzufügen unnötiger Abhängigkeiten, da diese die Bereitstellung verlangsamen und Ringabhängigkeiten schaffen können.Avoid adding unnecessary dependencies as they can slow your deployment and create circular dependencies. Anleitungen zum Festlegen von Abhängigkeiten finden Sie unter Definieren der Reihenfolge für die Bereitstellung von Ressourcen in ARM-Vorlagen.For guidance on setting dependencies, see Define the order for deploying resources in ARM templates.
tagstags NeinNo Markierungen, die der Ressource zugeordnet sindTags that are associated with the resource. Verwenden Sie Tags zum logischen Organisieren der Ressourcen in Ihrem Abonnement.Apply tags to logically organize resources across your subscription.
skusku NeinNo Einige Ressourcen lassen Werte zu, die die bereitzustellende SKU definieren.Some resources allow values that define the SKU to deploy. Beispielsweise können Sie den Typ der Redundanz für ein Speicherkonto angeben.For example, you can specify the type of redundancy for a storage account.
kindkind NeinNo Einige Ressourcen lassen einen Wert zu, der den Typ der Ressource definiert, die Sie bereitstellen.Some resources allow a value that defines the type of resource you deploy. Beispielsweise können Sie den Typ der zu erstellenden Cosmos DB angeben.For example, you can specify the type of Cosmos DB to create.
copycopy NeinNo Wenn mehr als eine Instanz erforderlich ist, die Anzahl der zu erstellenden Ressourcen.If more than one instance is needed, the number of resources to create. Der Standardmodus ist parallel.The default mode is parallel. Geben Sie den seriellen Modus an, wenn nicht alle Ressourcen gleichzeitig bereitgestellt werden sollen.Specify serial mode when you don't want all or the resources to deploy at the same time. Weitere Informationen finden Sie unter Erstellen mehrerer Instanzen von Ressourcen in Azure Resource Manager.For more information, see Create several instances of resources in Azure Resource Manager.
Tarifplan NeinNo Einige Ressourcen lassen Werte zu, die den bereitzustellenden Tarif definieren.Some resources allow values that define the plan to deploy. Beispielsweise können Sie das Marketplace-Image für einen virtuellen Computer angeben.For example, you can specify the marketplace image for a virtual machine.
propertiesproperties NeinNo Ressourcenspezifische Konfigurationseinstellungen.Resource-specific configuration settings. Die Werte für die Eigenschaften sind mit den Werten identisch, die Sie im Anforderungstext für den REST-API-Vorgang (PUT-Methode) angegeben haben, um die Ressource zu erstellen.The values for the properties are the same as the values you provide in the request body for the REST API operation (PUT method) to create the resource. Sie können auch ein Kopierarray angeben, um mehrere Instanzen einer Eigenschaft zu erstellen.You can also specify a copy array to create several instances of a property. Informationen zum Bestimmen verfügbarer Werte finden Sie in der Vorlagenreferenz.To determine available values, see template reference.
ressourcenresources NeinNo Untergeordnete Ressourcen, die von der definierten Ressource abhängig sind.Child resources that depend on the resource being defined. Stellen Sie nur Ressourcentypen bereit, die laut Schema der übergeordneten Ressource zulässig sind.Only provide resource types that are permitted by the schema of the parent resource. Eine Abhängigkeit von der übergeordneten Ressource ist nicht impliziert.Dependency on the parent resource isn't implied. Sie müssen diese Abhängigkeit explizit definieren.You must explicitly define that dependency. Weitere Informationen finden Sie unter Festlegen von Name und Typ für untergeordnete Ressourcen.See Set name and type for child resources.

AusgabenOutputs

Im Abschnitt outputs legen Sie Werte fest, die von der Bereitstellung zurückgegeben werden.In the outputs section, you specify values that are returned from deployment. In der Regel geben Sie Werte aus bereitgestellten Ressourcen zurück.Typically, you return values from resources that were deployed.

Das folgende Beispiel zeigt die Struktur einer Ausgabedefinition:The following example shows the structure of an output definition:

"outputs": {
  "<output-name>": {
    "condition": "<boolean-value-whether-to-output-value>",
    "type": "<type-of-output-value>",
    "value": "<output-value-expression>",
    "copy": {
      "count": <number-of-iterations>,
      "input": <values-for-the-variable>
    }
  }
}
ElementnameElement name ErforderlichRequired BESCHREIBUNGDescription
output-nameoutput-name JaYes Name des Ausgabewerts.Name of the output value. Es muss sich um einen gültigen JavaScript-Bezeichner handeln.Must be a valid JavaScript identifier.
conditioncondition NeinNo Boolescher Wert, der angibt, ob dieser Ausgabewert zurückgegeben wird.Boolean value that indicates whether this output value is returned. Wenn true, wird der Wert in die Ausgabe für die Bereitstellung einbezogen.When true, the value is included in the output for the deployment. Wenn false, wird der Ausgabewert für diese Bereitstellung ausgelassen.When false, the output value is skipped for this deployment. Wenn keine Angabe erfolgt, lautet der Standardwert true.When not specified, the default value is true.
typetype JaYes Der Typ des Ausgabewerts.Type of the output value. Ausgabewerte unterstützen dieselben Typen wie Vorlagen-Eingabeparameter.Output values support the same types as template input parameters. Bei Angabe von securestring für den Ausgabetyp wird der Wert nicht im Bereitstellungsverlauf angezeigt und kann nicht aus einer anderen Vorlage abgerufen werden.If you specify securestring for the output type, the value isn't displayed in the deployment history and can't be retrieved from another template. Um einen geheimen Wert in mehreren Vorlagen zu verwenden, speichern Sie das Geheimnis in einer Key Vault-Instanz, und verweisen Sie in der Parameterdatei auf das Geheimnis.To use a secret value in more than one template, store the secret in a Key Vault and reference the secret in the parameter file. Weitere Informationen finden Sie unter Verwenden von Azure Key Vault zum Übergeben eines sicheren Parameterwerts während der Bereitstellung.For more information, see Use Azure Key Vault to pass secure parameter value during deployment.
valuevalue NeinNo Vorlagensprachausdruck, der ausgewertet und als Ausgabewert zurückgegeben wird.Template language expression that is evaluated and returned as output value. Geben Sie value oder copy an.Specify either value or copy.
copycopy NeinNo Wird verwendet, um mehr als einen Wert für eine Ausgabe zurückzugeben.Used to return more than one value for an output. Geben Sie value oder copy an.Specify value or copy. Weitere Informationen finden Sie unter Ausgabeiteration in ARM-Vorlagen.For more information, see Output iteration in ARM templates.

Beispiele für die Verwendung von Ausgaben finden Sie unter Ausgaben in ARM-Vorlagen.For examples of how to use outputs, see Outputs in ARM template.

Kommentare und MetadatenComments and metadata

Es gibt mehrere Möglichkeiten, um Kommentare und Metadaten in Ihrer Vorlage hinzuzufügen.You have a few options for adding comments and metadata to your template.

KommentareComments

Für Inlinekommentare können Sie entweder // oder /* ... */ verwenden, aber diese Syntax funktioniert nicht mit allen Tools.For inline comments, you can use either // or /* ... */ but this syntax doesn't work with all tools. Wenn Sie diese Art von Kommentar hinzufügen, stellen Sie sicher, dass die von Ihnen verwendeten Tools JSON-Inlinekommentare unterstützen.If you add this style of comment, be sure the tools you use support inline JSON comments.

Hinweis

Wenn Sie Vorlagen mit Kommentaren mithilfe der Azure CLI, Version 2.3.0 oder niedriger, bereitstellen möchten, müssen Sie den Switch --handle-extended-json-format verwenden.To deploy templates with comments by using Azure CLI with version 2.3.0 or older, you must use the --handle-extended-json-format switch.

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2018-10-01",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[parameters('location')]", //defaults to resource group location
  "dependsOn": [ /* storage account and network interface must be deployed first */
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

In Visual Studio Code kann die Azure Resource Manager-Tools-Erweiterung automatisch eine ARM-Vorlage erkennen und den Sprachmodus ändern.In Visual Studio Code, the Azure Resource Manager Tools extension can automatically detect an ARM template and change the language mode. Wenn in der rechten unteren Ecke von Visual Studio Code Azure Resource Manager-Vorlage angezeigt wird, können Sie die Inlinekommentare verwenden.If you see Azure Resource Manager Template at the bottom-right corner of Visual Studio Code, you can use the inline comments. Die Inlinekommentare werden nicht mehr als ungültig markiert.The inline comments are no longer marked as invalid.

Azure Resource Manager-Vorlagenmodus in Visual Studio Code

MetadatenMetadata

Sie können ein metadata-Objekt fast überall in Ihrer Vorlage hinzufügen.You can add a metadata object almost anywhere in your template. Resource Manager ignoriert das Objekt, aber Sie werden von Ihrem JSON-Editor möglicherweise gewarnt, dass die Eigenschaft nicht gültig ist.Resource Manager ignores the object, but your JSON editor may warn you that the property isn't valid. Definieren Sie im Objekt die erforderlichen Eigenschaften.In the object, define the properties you need.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "comments": "This template was developed for demonstration purposes.",
    "author": "Example Name"
  },

Fügen Sie für parameters ein metadata-Objekt mit einer description-Eigenschaft hinzu.For parameters, add a metadata object with a description property.

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "User name for the Virtual Machine."
    }
  },

Wenn Sie die Vorlage über das Portal bereitstellen, wird der Text, den Sie in der Beschreibung angeben, automatisch als Tipp für diesen Parameter verwendet.When deploying the template through the portal, the text you provide in the description is automatically used as a tip for that parameter.

Parametertipp anzeigen

Fügen Sie für resources ein comments-Element oder ein metadata-Objekt hinzu.For resources, add a comments element or a metadata object. Das folgende Beispiel zeigt sowohl ein comments-Element als auch ein metadata-Objekt.The following example shows both a comments element and a metadata object.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2018-07-01",
    "name": "[concat('storage', uniqueString(resourceGroup().id))]",
    "comments": "Storage account used to store VM disks",
    "location": "[parameters('location')]",
    "metadata": {
      "comments": "These tags are needed for policy compliance."
    },
    "tags": {
      "Dept": "[parameters('deptName')]",
      "Environment": "[parameters('environment')]"
    },
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "Storage",
    "properties": {}
  }
]

Fügen Sie für outputs dem Ausgabewert ein metadata-Objekt hinzu.For outputs, add a metadata object to the output value.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]",
    "metadata": {
      "comments": "Return the fully qualified domain name"
    }
  },

Sie können benutzerdefinierten Funktionen kein metadata-Objekt hinzufügen.You can't add a metadata object to user-defined functions.

Mehrzeilige ZeichenfolgenMulti-line strings

Sie können eine Zeichenfolge in mehrere Zeilen unterteilen.You can break a string into multiple lines. Sehen Sie sich beispielsweise die location-Eigenschaft und einen der Kommentare im folgenden JSON-Beispiel an.For example, see the location property and one of the comments in the following JSON example.

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2018-10-01",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[
    parameters('location')
    ]", //defaults to resource group location
  /*
    storage account and network interface
    must be deployed first
  */
  "dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

Hinweis

Wenn Sie Vorlagen mit mehrzeiligen Zeichenfolgen mithilfe der Azure CLI, Version 2.3.0oder niedriger, bereitstellen möchten, müssen Sie den Switch --handle-extended-json-format verwenden.To deploy templates with multi-line strings by using Azure CLI with version 2.3.0 or older, you must use the --handle-extended-json-format switch.

Nächste SchritteNext steps