Verstehen der Struktur und Syntax von Azure Resource Manager-VorlagenUnderstand the structure and syntax of Azure Resource Manager templates

In diesem Artikel wird die Struktur einer Azure Resource Manager-Vorlage beschrieben.This article describes the structure of an Azure Resource Manager 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. Die Vorlage besteht aus JSON-Code und Ausdrücken, mit denen Sie Werte für Ihre Bereitstellung erstellen können.The template consists of JSON and expressions that you can use to construct values for your deployment.

Dieser Artikel richtet sich an Benutzer, die bereits Vorkenntnisse zu Resource Manager-Vorlagen haben.This article is intended for users who have some familiarity with Resource Manager templates. Er bietet detaillierte Informationen zur Struktur und Syntax der Vorlage.It provides detailed information about the structure and syntax of the template. Eine Einführung in die Erstellung einer Vorlage finden Sie unter Schnellstart: Erstellen und Bereitstellen von Azure Resource Manager-Vorlagen über das Azure-Portal.If you want an introduction to creating a template, see Create your first Azure Resource Manager template.

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/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "",
  "apiProfile": "",
  "parameters": {  },
  "variables": {  },
  "functions": [  ],
  "resources": [  ],
  "outputs": {  }
}
ElementnameElement name ErforderlichRequired BESCHREIBUNGDescription
$schema$schema JaYes Speicherort der JSON-Schemadatei, die die Version der Vorlagensprache beschreibt.Location of the JSON schema file that describes the version of the template language.

Verwenden Sie Folgendes für Bereitstellungen von Ressourcengruppen: https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#.For resource group deployments, use: https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#

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

SyntaxSyntax

Die grundlegende Syntax der Vorlage ist JSON.The basic syntax of the template is JSON. Allerdings können Sie Ausdrücke verwenden, um die JSON-Werte zu erweitern, die in der Vorlage zur Verfügung stehen.However, you can use expressions to extend the JSON values available within the template. Ausdrücke beginnen und enden mit Klammern, entsprechend [ und ].Expressions start and end with brackets: [ and ], respectively. Der Wert des Ausdrucks wird bei der Bereitstellung der Vorlage ausgewertet.The value of the expression is evaluated when the template is deployed. Ein Ausdruck kann eine Zeichenfolge, eine ganze Zahl, einen booleschen Wert, ein Array oder ein Objekt zurückgeben.An expression can return a string, integer, boolean, array, or object. Das folgende Beispiel zeigt einen Ausdruck im Standardwert eines Parameters:The following example shows an expression in the default value of a parameter:

"parameters": {
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
},

Innerhalb des Ausdrucks ruft die Syntax resourceGroup() eine der Funktionen auf, die Resource Manager für die Verwendung innerhalb einer Vorlage bereitstellt.Within the expression, the syntax resourceGroup() calls one of the functions that Resource Manager provides for use within a template. Genau wie in JavaScript haben Funktionsaufrufe das Format functionName(arg1,arg2,arg3).Just like in JavaScript, function calls are formatted as functionName(arg1,arg2,arg3). Die Syntax .location ruft eine Eigenschaft des Objekts ab, das von dieser Funktion zurückgegeben wird.The syntax .location retrieves one property from the object returned by that function.

Bei Vorlagenfunktionen und ihren Parametern wird Groß-und Kleinschreibung nicht unterschieden.Template functions and their parameters are case-insensitive. Der Resource Manager löst beispielsweise variables('var1') und VARIABLES('VAR1') identisch auf.For example, Resource Manager resolves variables('var1') and VARIABLES('VAR1') as the same. Bei der Auswertung wird die Groß-/Kleinschreibung beibehalten, sofern diese nicht ausdrücklich durch die Funktion geändert wird (z.B. mit „toUpper“ oder „toLower“).When evaluated, unless the function expressly modifies case (such as toUpper or toLower), the function preserves the case. Für spezielle Ressourcentypen gelten möglicherweise Vorgaben zur Schreibweise ungeachtet der Auswertungsweise von Funktionen.Certain resource types may have case requirements irrespective of how functions are evaluated.

Wenn eine Literalzeichenfolge mit einer öffnenden eckigen Klammer [ beginnen und einer schließenden eckigen Klammer ] enden, aber nicht als Ausdruck interpretiert werden soll, fügen Sie am Anfang der Zeichenfolge eine zusätzliche eckige Klammer ein: [[.To have a literal string start with a left bracket [ and end with a right bracket ], but not have it interpreted as an expression, add an extra bracket to start the string with [[. Beispielsweise wird folgende Variable:For example, the variable:

"demoVar1": "[[test value]"

in [test value] aufgelöst.Resolves to [test value].

Wenn die Literalzeichenfolge jedoch nicht mit einer eckigen Klammer endet, dürfen Sie die erste eckige Klammer nicht mit einem Escapezeichen versehen.However, if the literal string doesn't end with a bracket, don't escape the first bracket. Beispielsweise wird folgende Variable:For example, the variable:

"demoVar2": "[test] value"

in [test] value aufgelöst.Resolves to [test] value.

Verwenden Sie einfache Anführungszeichen, um einen Zeichenfolgenwert als Parameter an eine Funktion zu übergeben.To pass a string value as a parameter to a function, use single quotes.

"name": "[concat('storage', uniqueString(resourceGroup().id))]"

Verwenden Sie den umgekehrten Schrägstrich, um doppelte Anführungszeichen in einem Ausdruck mit einem Escapezeichen zu versehen, wie beim Hinzufügen eines JSON-Objekts.To escape double quotes in an expression, such as adding a JSON object in the template, use the backslash.

"tags": {
    "CostCenter": "{\"Dept\":\"Finance\",\"Environment\":\"Production\"}"
},

Ein Vorlagenausdruck darf aus maximal 24.576 Zeichen bestehen.A template expression can't exceed 24,576 characters.

Unter Funktionen von Azure-Ressourcen-Manager-Vorlagenfinden Sie eine vollständige Liste der Vorlagenfunktionen.For the full list of template functions, see Azure Resource Manager template functions.

ParameterParameters

Im Abschnitt „Parameter“ 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. Mit diesen Parameterwerten können Sie die Bereitstellung anpassen, indem Sie Werte resources, die für eine bestimmte Umgebung (z. B. Entwicklung, Testing oder Produktion) maßgeschneidert sind.These parameter values enable you to customize the deployment by providing values that are tailored for a particular environment (such as dev, test, and production). Sie müssen in der Vorlage nicht unbedingt Parameter angeben, aber ohne Parameter stellt Ihre Vorlage immer die gleichen Ressourcen mit den gleichen Namen, Speicherorten und Eigenschaften bereit.You don't have to provide parameters in your template, but without parameters your template would always deploy the same resources with the same names, locations, and properties.

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, wie in diesem Artikel beschrieben wird.You can reduce the number of parameters by using objects that contain multiple properties, as shown in this article.

Verfügbare EigenschaftenAvailable 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
parameterNameparameterName 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.
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.

Definieren und Verwenden eines ParametersDefine and use a parameter

Das folgende Beispiel zeigt eine einfache Parameterdefinition.The following example shows a simple parameter definition. Dabei wird der Name des Parameters definiert, und es wird angegeben, dass er einen Zeichenfolgenwert annimmt.It defines the name of the parameter, and specifies that it takes a string value. Der Parameter akzeptiert nur Werte, die für seine beabsichtigte Verwendung sinnvoll sind.The parameter only accepts values that make sense for its intended use. Er gibt einen Standardwert an, wenn während der Bereitstellung kein Wert angegeben wird.It specifies a default value when no value is provided during deployment. Schließlich enthält den Parameter eine Beschreibung seiner Syntax.Finally, the parameter includes a description of its use.

"parameters": {
  "storageSKU": {
    "type": "string",
    "allowedValues": [
      "Standard_LRS",
      "Standard_ZRS",
      "Standard_GRS",
      "Standard_RAGRS",
      "Premium_LRS"
    ],
    "defaultValue": "Standard_LRS",
    "metadata": {
      "description": "The type of replication to use for the storage account."
    }
  }   
}

In der Vorlage verweisen Sie mithilfe der folgenden Syntax auf den Wert für den Parameter:In the template, you reference the value for the parameter with the following syntax:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "sku": {
      "name": "[parameters('storageSKU')]"
    },
    ...
  }
]

Vorlagenfunktionen mit ParameternTemplate functions with parameters

Wenn Sie den Standardwert für einen Parameter angeben, können Sie die meisten Vorlagenfunktionen verwenden.When specifying the default value for a parameter, you can use most template functions. Sie können einen anderen Parameterwert verwenden, um einen Standardwert zu erstellen.You can use another parameter value to build a default value. Die folgende Vorlage veranschaulicht die Verwendung von Funktionen im Standardwert:The following template demonstrates the use of functions in the default value:

"parameters": {
  "siteName": {
    "type": "string",
    "defaultValue": "[concat('site', uniqueString(resourceGroup().id))]",
    "metadata": {
      "description": "The site name. To use the default value, do not specify a new value."
    }
  },
  "hostingPlanName": {
    "type": "string",
    "defaultValue": "[concat(parameters('siteName'),'-plan')]",
    "metadata": {
      "description": "The host name. To use the default value, do not specify a new value."
    }
  }
}

Sie können die reference-Funktion nicht im Abschnitt „Parameter“ verwenden.You can't use the reference function in the parameters section. Parameter werden vor der Bereitstellung ausgewertet, daher kann die reference-Funktion nicht den Laufzeitstatus einer Ressource abrufen.Parameters are evaluated before deployment so the reference function can't get the runtime state of a resource.

Objekte als ParameterObjects as parameters

Es kann einfacher sein, in Beziehung stehende Werte zu organisieren, indem sie als Objekt übergeben werden.It can be easier to organize related values by passing them in as an object. Diese Vorgehensweise verringert auch die Anzahl der Parameter in der Vorlage.This approach also reduces the number of parameters in the template.

Definieren Sie den Parameter in Ihrer Vorlage, und geben Sie ein JSON-Objekt an, anstatt einen einzelnen Wert während der Bereitstellung zu übergeben.Define the parameter in your template and specify a JSON object instead of a single value during deployment.

"parameters": {
  "VNetSettings": {
    "type": "object",
    "defaultValue": {
      "name": "VNet1",
      "location": "eastus",
      "addressPrefixes": [
        {
          "name": "firstPrefix",
          "addressPrefix": "10.0.0.0/22"
        }
      ],
      "subnets": [
        {
          "name": "firstSubnet",
          "addressPrefix": "10.0.0.0/24"
        },
        {
          "name": "secondSubnet",
          "addressPrefix": "10.0.1.0/24"
        }
      ]
    }
  }
},

Verweisen Sie anschließend auf die Untereigenschaften des Parameters, indem Sie den Punktoperator verwenden.Then, reference the subproperties of the parameter by using the dot operator.

"resources": [
  {
    "apiVersion": "2015-06-15",
    "type": "Microsoft.Network/virtualNetworks",
    "name": "[parameters('VNetSettings').name]",
    "location": "[parameters('VNetSettings').location]",
    "properties": {
      "addressSpace":{
        "addressPrefixes": [
          "[parameters('VNetSettings').addressPrefixes[0].addressPrefix]"
        ]
      },
      "subnets":[
        {
          "name":"[parameters('VNetSettings').subnets[0].name]",
          "properties": {
            "addressPrefix": "[parameters('VNetSettings').subnets[0].addressPrefix]"
          }
        },
        {
          "name":"[parameters('VNetSettings').subnets[1].name]",
          "properties": {
            "addressPrefix": "[parameters('VNetSettings').subnets[1].addressPrefix]"
          }
        }
      ]
    }
  }
]

ParameterbeispielvorlagenParameter example templates

Diese Beispielvorlagen veranschaulichen einige Szenarien für die Verwendung von Parametern.These example templates demonstrate some scenarios for using parameters. Stellen Sie sie bereit, um zu testen, wie Parameter in verschiedenen Szenarien verarbeitet werden.Deploy them to test how parameters are handled in different scenarios.

VorlageTemplate BESCHREIBUNGDescription
Parameter mit Funktionen für Standardwerteparameters with functions for default values Zeigt, wie Vorlagenfunktionen verwendet werden, wenn Sie Standardwerte für Parameter definieren.Demonstrates how to use template functions when defining default values for parameters. Die Vorlage stellt keine Ressourcen bereit.The template doesn't deploy any resources. Sie erstellt Parameterwerte und gibt diese Werte zurück.It constructs parameter values and returns those values.
Parameterobjektparameter object Veranschaulicht die Verwendung eines Objekts für einen Parameter.Demonstrates using an object for a parameter. Die Vorlage stellt keine Ressourcen bereit.The template doesn't deploy any resources. Sie erstellt Parameterwerte und gibt diese Werte zurück.It constructs parameter values and returns those values.

VariablesVariables

Im Abschnitt „variables“ erstellen Sie Werte, die in der ganzen 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.

Verfügbare DefinitionenAvailable definitions

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.

Definieren und Verwenden einer VariablenDefine and use a variable

Im folgenden Beispiel wird eine Variablendefinition gezeigt.The following example shows a variable definition. Dabei wird ein Zeichenfolgenwert für einen Speicherkontonamen erstellt.It creates a string value for a storage account name. Es werden mehrere Vorlagenfunktionen verwendet, um einen Parameterwert abzurufen und zu einer eindeutigen Zeichenfolge zu verketten.It uses several template functions to get a parameter value, and concatenates it to a unique string.

"variables": {
  "storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},

Sie verwenden die Variable, wenn Sie die Ressource definieren.You use the variable when defining the resource.

"resources": [
  {
    "name": "[variables('storageName')]",
    "type": "Microsoft.Storage/storageAccounts",
    ...

KonfigurationsvariablenConfiguration variables

Sie können komplexe JSON-Typen verwenden, um verwandte Werte für eine Umgebung zu definieren.You can use complex JSON types to define related values for an environment.

"variables": {
  "environmentSettings": {
    "test": {
      "instanceSize": "Small",
      "instanceCount": 1
    },
    "prod": {
      "instanceSize": "Large",
      "instanceCount": 4
    }
  }
},

Unter „Parameters“ erstellen Sie einen Wert, der angibt, welche Konfigurationswerte verwendet werden sollen.In parameters, you create a value that indicates which configuration values to use.

"parameters": {
  "environmentName": {
    "type": "string",
    "allowedValues": [
      "test",
      "prod"
    ]
  }
},

Sie rufen die aktuellen Einstellungen folgendermaßen ab:You retrieve the current settings with:

"[variables('environmentSettings')[parameters('environmentName')].instanceSize]"

VariablenbeispielvorlagenVariable example templates

Diese Beispielvorlagen veranschaulichen einige Szenarien für die Verwendung von Variablen.These example templates demonstrate some scenarios for using variables. Stellen Sie sie bereit, um zu testen, wie Variablen in verschiedenen Szenarien verarbeitet werden.Deploy them to test how variables are handled in different scenarios.

VorlageTemplate BESCHREIBUNGDescription
Variablendefinitionenvariable definitions Zeigt die verschiedenen Typen von Variablen.Demonstrates the different types of variables. Die Vorlage stellt keine Ressourcen bereit.The template doesn't deploy any resources. Sie erstellt Variablenwerte und gibt diese Werte zurück.It constructs variable values and returns those values.
Konfigurationsvariableconfiguration variable Zeigt die Verwendung einer Variablen, die Konfigurationswerte definiert.Demonstrates the use of a variable that defines configuration values. Die Vorlage stellt keine Ressourcen bereit.The template doesn't deploy any resources. Sie erstellt Variablenwerte und gibt diese Werte zurück.It constructs variable values and returns those values.
Netzwerksicherheitsregeln und Parameterdateinetwork security rules and parameter file Generiert ein Array im richtigen Format zum Zuweisen von Sicherheitsregeln zu einer Netzwerksicherheitsgruppe.Constructs an array in the correct format for assigning security rules to a network security group.

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 expression 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.

Für benutzerdefinierte Funktionen müssen Namespacewerte verwendet werden, um Namenskonflikte mit Vorlagenfunktionen zu vermeiden.Your functions require a namespace value to avoid naming conflicts with template functions. Im folgenden Beispiel wird eine Funktion veranschaulicht, die einen Speicherkontonamen zurückgibt:The following example shows a function that returns a storage account name:

"functions": [
  {
    "namespace": "contoso",
    "members": {
      "uniqueName": {
        "parameters": [
          {
            "name": "namePrefix",
            "type": "string"
          }
        ],
        "output": {
          "type": "string",
          "value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
        }
      }
    }
  }
],

Sie rufen die Funktion wie folgt auf:You call the function with:

"resources": [
  {
    "name": "[contoso.uniqueName(parameters('storageNamePrefix'))]",
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2016-01-01",
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "Storage",
    "location": "South Central US",
    "tags": {},
    "properties": {}
  }
]

RessourcenResources

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

Verfügbare EigenschaftenAvailable properties

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

"resources": [
  {
      "condition": "<true-to-deploy-this-resource>",
      "apiVersion": "<api-version-of-resource>",
      "type": "<resource-provider-namespace/resource-type-name>",
      "name": "<name-of-the-resource>",
      "location": "<location-of-resource>",
      "tags": {
          "<tag-name1>": "<tag-value1>",
          "<tag-name2>": "<tag-value2>"
      },
      "comments": "<your-reference-notes>",
      "copy": {
          "name": "<name-of-copy-loop>",
          "count": <number-of-iterations>,
          "mode": "<serial-or-parallel>",
          "batchSize": <number-to-deploy-serially>
      },
      "dependsOn": [
          "<array-of-related-resource-names>"
      ],
      "properties": {
          "<settings-for-the-resource>",
          "copy": [
              {
                  "name": ,
                  "count": ,
                  "input": {}
              }
          ]
      },
      "sku": {
          "name": "<sku-name>",
          "tier": "<sku-tier>",
          "size": "<sku-size>",
          "family": "<sku-family>",
          "capacity": <sku-capacity>
      },
      "kind": "<type-of-resource>",
      "plan": {
          "name": "<plan-name>",
          "promotionCode": "<plan-promotion-code>",
          "publisher": "<plan-publisher>",
          "product": "<plan-product>",
          "version": "<plan-version>"
      },
      "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.
apiVersionapiVersion JaYes Version der REST-API zum Erstellen der Ressource.Version of the REST API to use for creating the resource. Informationen zum Bestimmen verfügbarer Werte finden Sie in der Vorlagenreferenz.To determine available values, see template reference.
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.
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. Darüber hinaus überprüfen Azure-Dienste, die externen Parteien den Ressourcennamen verfügbar machen, den Namen, um sicherzustellen, dass es sich nicht um einen Versuch handelt, eine andere Identität vorzutäuschen.In addition, 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.
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.
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.
Kommentarecomments 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.
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.
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. Tipps für das Festlegen von Abhängigkeiten finden Sie unter Definieren von Abhängigkeiten in Azure Resource Manager-Vorlagen.For guidance on setting dependencies, see Defining dependencies in Azure Resource Manager templates.
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.
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.
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.
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.

BedingungCondition

Wenn Sie sich während der Bereitstellung entscheiden müssen, ob Sie eine Ressource erstellen möchten, verwenden Sie das condition-Element.When you must decide during deployment whether to create a resource, use the condition element. Der Wert für dieses Element wird mit „true“ oder „false“ aufgelöst.The value for this element resolves to true or false. Wenn der Wert TRUE ist, wird die Ressource erstellt.When the value is true, the resource is created. Wenn der Wert FALSE ist, wird die Ressource nicht erstellt.When the value is false, the resource isn't created. Der Wert kann nur auf die gesamte Ressource angewandt werden.The value can only be applied to the whole resource.

Dieser Wert wird üblicherweise verwendet, wenn Sie eine neue Ressource erstellen oder eine bereits vorhandene verwenden möchten.Typically, you use this value when you want to create a new resource or use an existing one. Verwenden Sie beispielsweise Folgendes, um anzugeben, ob ein neues Speicherkonto bereitgestellt wird oder ob ein vorhandenes Speicherkonto verwendet wird:For example, to specify whether a new storage account is deployed or an existing storage account is used, use:

{
    "condition": "[equals(parameters('newOrExisting'),'new')]",
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageAccountName')]",
    "apiVersion": "2017-06-01",
    "location": "[resourceGroup().location]",
    "sku": {
        "name": "[variables('storageAccountType')]"
    },
    "kind": "Storage",
    "properties": {}
}

Eine vollständige Beispielvorlage, die das condition-Element verwendet, finden Sie unter VM mit einem neuen oder vorhandenen virtuellen Netzwerk, Speicher und einer neuen oder vorhandenen öffentlichen IP-Adresse.For a complete example template that uses the condition element, see VM with a new or existing Virtual Network, Storage, and Public IP.

Bei Verwendung einer Funktion vom Typ reference oder list mit einer Ressource, die bedingt bereitgestellt wird, wird die Funktion auch dann ausgewertet, wenn die Ressource nicht bereitgestellt wird.If you use a reference or list function with a resource that is conditionally deployed, the function is evaluated even if the resource isn't deployed. Es wird eine Fehlermeldung angezeigt, wenn die Funktion auf eine nicht vorhandene Ressource verweist.You get an error if the function refers to a resource that doesn't exist. Verwenden Sie die if-Funktion, um sicherzustellen, dass die Funktion nur für Bedingungen ausgewertet wird, wenn die Ressource bereitgestellt wird.Use the if function to make sure the function is only evaluated for conditions when the resource is deployed. Eine Beispielvorlage, die „if“ und „reference“ mit einer bedingt bereitgestellten Ressource verwendet, finden Sie unter der Funktion if.See the if function for a sample template that uses if and reference with a conditionally deployed resource.

RessourcennamenResource names

Im Allgemeinen arbeiten Sie in Resource Manager mit drei Arten von Ressourcennamen:Generally, you work with three types of resource names in Resource Manager:

  • Ressourcennamen, die eindeutig sein müssen.Resource names that must be unique.
  • Ressourcennamen, die nicht eindeutig sein müssen. Sie können jedoch einen Namen angeben, der das Identifizieren der Ressource vereinfacht.Resource names that aren't required to be unique, but you choose to provide a name that can help you identify the resource.
  • Ressourcennamen, die allgemein sein können.Resource names that can be generic.

Geben Sie einen eindeutigen Ressourcennamen für alle Ressourcentypen an, die über einen Datenzugriffsendpunkt verfügen.Provide a unique resource name for any resource type that has a data access endpoint. Es folgen allgemeine Ressourcentypen, für die ein eindeutiger Name erforderlich ist:Some common resource types that require a unique name include:

  • Azure Storage1Azure Storage1
  • Web-Apps-Funktion von Azure App ServiceWeb Apps feature of Azure App Service
  • SQL ServerSQL Server
  • Azure Key VaultAzure Key Vault
  • Azure Cache for RedisAzure Cache for Redis
  • Azure BatchAzure Batch
  • Azure Traffic ManagerAzure Traffic Manager
  • Azure SearchAzure Search
  • Azure HDInsightAzure HDInsight

1Für Namen von Speicherkonten gilt darüber hinaus Folgendes: Kleinbuchstaben, max. 24 Zeichen, keine Bindestriche.1 Storage account names also must be lowercase, 24 characters or less, and not have any hyphens.

Wenn Sie den Namen festlegen, können Sie entweder manuell einen eindeutigen Namen erstellen oder die uniqueString()-Funktion zum Generieren eines Namens verwenden.When setting the name, you can either manually create a unique name or use the uniqueString() function to generate a name. Sie können auch ein Präfix oder Suffix zum uniqueString-Ergebnis hinzufügen.You also might want to add a prefix or suffix to the uniqueString result. Wenn Sie den eindeutigen Namen ändern, können Sie den Ressourcentyp einfacher aus dem Namen ableiten.Modifying the unique name can help you more easily identify the resource type from the name. Beispielsweise können Sie einen eindeutigen Namen für ein Speicherkonto mit der folgenden Variablen generieren:For example, you can generate a unique name for a storage account by using the following variable:

"variables": {
  "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]"
}

Für einige Ressourcentypen möchten Sie möglicherweise einen Namen zur Identifizierung angeben, der Name muss jedoch nicht eindeutig sein.For some resource types, you might want to provide a name for identification, but the name doesn't have to be unique. Geben Sie für diese Ressourcentypen einen Namen an, der ihre Verwendung oder Charakteristiken beschreibt.For these resource types, provide a name that describes it use or characteristics.

"parameters": {
  "vmName": { 
    "type": "string",
    "defaultValue": "demoLinuxVM",
    "metadata": {
      "description": "The name of the VM to create."
    }
  }
}

Für Ressourcentypen, auf die hauptsächlich über eine andere Ressource zugegriffen wird, können Sie einen allgemeinen Namen wählen, der in der Vorlage hartcodiert ist.For resource types that you mostly access through a different resource, you can use a generic name that is hard-coded in the template. Beispielsweise können Sie einen allgemeinen Standardnamen für Firewallregeln auf einer SQL Server-Instanz festlegen:For example, you can set a standard, generic name for firewall rules on a SQL server:

{
  "type": "firewallrules",
  "name": "AllowAllWindowsAzureIps",
  ...
}

Speicherort von RessourcenResource location

Beim Bereitstellen einer Vorlage müssen Sie einen Speicherort für jede Ressource angeben.When deploying a template, you must provide a location for each resource. An verschiedenen Speicherorten werden unterschiedliche Ressourcentypen unterstützt.Different resource types are supported in different locations. Informationen zum Abrufen der unterstützten Speicherorte für einen Ressourcentyp finden Sie unter Azure-Ressourcenanbieter und -typen.To get the supported locations for a resource type, see Azure resource providers and types.

Verwenden Sie einen Parameter zur Angabe des Standorts für Ressourcen, und legen den Standardwert auf resourceGroup().location fest.Use a parameter to specify the location for resources, and set the default value to resourceGroup().location.

Das folgende Beispiel zeigt ein Speicherkonto, das an einem als Parameter angegebenen Speicherort bereitgestellt wird:The following example shows a storage account that is deployed to a location specified as a parameter:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_ZRS",
        "Premium_LRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    }
  },
  "variables": {
    "storageAccountName": "[concat('storage', uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "apiVersion": "2018-07-01",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    }
  }
}

AusgabenOutputs

Im Ausgabenabschnitt 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.

Verfügbare EigenschaftenAvailable properties

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

"outputs": {
  "<outputName>" : {
    "condition": "<boolean-value-whether-to-output-value>",
    "type" : "<type-of-output-value>",
    "value": "<output-value-expression>"
  }
}
ElementnameElement name ErforderlichRequired BESCHREIBUNGDescription
outputNameoutputName 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 JaYes Vorlagensprachausdruck, der ausgewertet und als Ausgabewert zurückgegeben wird.Template language expression that is evaluated and returned as output value.

Definieren und Verwenden von AusgabewertenDefine and use output values

Das folgende Beispiel zeigt die Vorgehensweise zum Zurückgeben der Ressourcen-ID für eine öffentliche IP-Adresse:The following example shows how to return the resource ID for a public IP address:

"outputs": {
  "resourceID": {
    "type": "string",
    "value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
  }
}

Das nächste Beispiel zeigt, wie die Ressourcen-ID für eine öffentliche IP-Adresse abhängig davon zurückgegeben wird, ob eine neue Ressourcen-ID bereitgestellt wurde:The next example shows how to conditionally return the resource ID for a public IP address based on whether a new one was deployed:

"outputs": {
  "resourceID": {
    "condition": "[equals(parameters('publicIpNewOrExisting'), 'new')]",
    "type": "string",
    "value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
  }
}

Ein einfaches Beispiel der bedingten Ausgabe finden Sie unter der Vorlage für die bedingte Ausgabe.For a simple example of conditional output, see conditional output template.

Nach der Bereitstellung können Sie den Wert per Skript abrufen.After the deployment, you can retrieve the value with script. Verwenden Sie für PowerShell Folgendes:For PowerShell, use:

(Get-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -Name <deployment-name>).Outputs.resourceID.value

Verwenden Sie für die Azure-Befehlszeilenschnittstelle den folgenden Befehl:For Azure CLI, use:

az group deployment show -g <resource-group-name> -n <deployment-name> --query properties.outputs.resourceID.value

Mit der Funktion reference können Sie den Ausgabewert aus einer verknüpften Vorlage abrufen.You can retrieve the output value from a linked template by using the reference function. Um einen Ausgabewert aus einer verknüpften Vorlage abzurufen, rufen Sie den Eigenschaftswert mit einer der folgenden ähnlichen Syntax ab: "[reference('deploymentName').outputs.propertyName.value]".To get an output value from a linked template, retrieve the property value with syntax like: "[reference('deploymentName').outputs.propertyName.value]".

Wenn Sie eine Ausgabeeigenschaft von einer verknüpften Vorlage abrufen, kann der Name der Eigenschaft keinen Bindestrich enthalten.When getting an output property from a linked template, the property name can't include a dash.

Das folgende Beispiel zeigt, wie Sie die IP-Adresse auf einen Lastenausgleich festlegen, indem Sie einen Wert aus einer verknüpften Vorlage abrufen.The following example shows how to set the IP address on a load balancer by retrieving a value from a linked template.

"publicIPAddress": {
  "id": "[reference('linkedTemplate').outputs.resourceID.value]"
}

Sie können die Funktion reference nicht im Ausgabeabschnitt einer geschachtelten Vorlage verwenden.You can't use the reference function in the outputs section of a nested template. Um die Werte für eine bereitgestellte Ressource in einer geschachtelten Vorlage zurückzugeben, konvertieren Sie Ihre geschachtelte Vorlage in eine verknüpfte Vorlage.To return the values for a deployed resource in a nested template, convert your nested template to a linked template.

AusgabebeispielvorlagenOutput example templates

VorlageTemplate BESCHREIBUNGDescription
Variablen kopierenCopy variables Erstellt komplexe Variablen und gibt die entsprechenden Werte aus.Creates complex variables and outputs those values. Stellt keine Ressourcen bereit.Doesn't deploy any resources.
Öffentliche IP-AdressePublic IP address Erstellt eine öffentliche IP-Adresse und gibt die Ressourcen-ID aus.Creates a public IP address and outputs the resource ID.
Load BalancerLoad balancer Stellt eine Verknüpfung mit der vorherigen Vorlage her.Links to the preceding template. Verwendet beim Erstellen des Lastenausgleichs die Ressourcen-ID in der Ausgabe.Uses the resource ID in the output when creating the load balancer.

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.

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/2015-01-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 Parameter 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 Ressourcen ein comments-Element oder ein Metadatenobjekt hinzu.For resources, add a comments element or a metadata object. Das folgende Beispiel zeigt sowohl ein Kommentarelement als auch ein Metadatenobjekt.The following example shows both a comments element and a metadata object.

"resources": [
  {
    "comments": "Storage account used to store VM disks",
    "apiVersion": "2018-07-01",
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[concat('storage', uniqueString(resourceGroup().id))]",
    "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 Ausgaben dem Ausgabewert ein Metadatenobjekt 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 ein Metadatenobjekt nicht zu benutzerdefinierten Funktionen hinzufügen.You can't add a metadata object to user-defined functions.

Für Inlinekommentare können Sie // verwenden, aber diese Syntax funktioniert nicht mit allen Tools.For inline comments, you can use // but this syntax doesn't work with all tools. Sie können nicht die Azure-Befehlszeilenschnittstelle verwenden, um die Vorlage mit Inlinekommentaren bereitzustellen.You can't use Azure CLI to deploy the template with inline comments. Und Sie können nicht den Portalvorlageneditor verwenden, um an Vorlagen mit Inlinekommentaren zu arbeiten.And, you can't use the portal template editor to work on templates with inline comments. 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.

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

Im VS-Code können Sie den Sprachmodus auf „JSON mit Kommentaren“ festlegen.In VS Code, you can set the language mode to JSON with comments. Die Inlinekommentare werden nicht mehr als ungültig markiert.The inline comments are no longer marked as invalid. So ändern Sie den ModusTo change the mode:

  1. Öffnen Sie die Sprachmodusauswahl (STRG+K M).Open language mode selection (Ctrl+K M)

  2. Wählen Sie JSON mit Kommentaren aus.Select JSON with Comments.

    Auswählen des Sprachmodus

Schnellstartanleitungen und TutorialsQuickstarts and tutorials

Verwenden Sie die folgenden Schnellstartanleitungen und Tutorials, um zu erfahren, wie Sie Resource Manager-Vorlagen entwickeln:Use the following quickstarts and tutorials to learn how to develop resource manager templates:

  • SchnellstartsQuickstarts

    TitelTitle BESCHREIBUNGDescription
    Verwenden des Azure-PortalsUse the Azure portal Enthält Informationen zum Generieren einer Vorlage mit dem Portal und zum Prozess zur Bearbeitung und Bereitstellung der Vorlage.Generate a template using the portal, and understand the process of editing and deploying the template.
    Verwenden von Visual Studio CodeUse Visual Studio Code Enthält Informationen zur Verwendung von Visual Studio Code zum Erstellen und Bearbeiten von Vorlagen und zur Verwendung der Azure Cloud Shell zum Bereitstellen von Vorlagen.Use Visual Studio Code to create and edit templates, and how to use the Azure Cloud shell to deploy templates.
    Verwenden von Visual StudioUse Visual Studio Enthält Informationen zur Verwendung von Visual Studio zum Erstellen, Bearbeiten und Bereitstellen von Vorlagen.Use Visual Studio to create, edit, and deploy templates.
  • LernprogrammeTutorials

    TitelTitle BESCHREIBUNGDescription
    Nutzen der VorlagenreferenzUtilize template reference Enthält Informationen zur Verwendung der Vorlagenreferenz zum Entwickeln von Vorlagen.Utilize the template reference documentation to develop templates. Im Tutorial ermitteln Sie das Speicherkontoschema und verwenden die Informationen zum Erstellen eines verschlüsselten Speicherkontos.In the tutorial, you find the storage account schema, and use the information to create an encrypted storage account.
    Erstellen mehrerer InstanzenCreate multiple instances Enthält Informationen zum Erstellen mehrerer Instanzen von Azure-Ressourcen.Create multiple instances of Azure resources. Im Tutorial erstellen Sie mehrere Instanzen des Speicherkontos.In the tutorial, you create multiple instances of storage account.
    Festlegen der Reihenfolge für die RessourcenbereitstellungSet resource deployment order Enthält Informationen zu Ressourcenabhängigkeiten.Define resource dependencies. In diesem Tutorial erstellen Sie ein virtuelles Netzwerk, einen virtuellen Computer und die abhängigen Azure-Ressourcen.In the tutorial, you create a virtual network, a virtual machine, and the dependent Azure resources. Sie erfahren, wie die Abhängigkeiten definiert werden.You learn how the dependencies are defined.
    Verwenden von BedingungenUse conditions Enthält Informationen zur Bereitstellung von Ressourcen basierend auf einigen Parameterwerten.Deploy resources based on some parameter values. In diesem Tutorial definieren Sie eine Vorlage, um ein neues Speicherkonto zu erstellen, oder verwenden ein vorhandenes Speicherkonto basierend auf dem Wert eines Parameters.In the tutorial, you define a template to create a new storage account or use an existing storage account based on the value of a parameter.
    Integrieren von Key VaultIntegrate key vault Enthält Informationen zum Abrufen von Geheimnissen/Kennwörtern aus Azure Key Vault.Retrieve secrets/passwords from Azure Key Vault. In diesem Tutorial erstellen Sie einen virtuellen Computer.In the tutorial, you create a virtual machine. Das Administratorkennwort für den virtuellen Computer wird aus einer Key Vault-Instanz abgerufen.The virtual machine administrator password is retrieved from a Key Vault.
    Erstellen verknüpfter VorlagenCreate linked templates Enthält Informationen zum Modularisieren von Vorlagen und Aufrufen von anderen Vorlagen aus einer Vorlage.Modularize templates, and call other templates from a template. In diesem Tutorial erstellen Sie ein virtuelles Netzwerk, einen virtuellen Computer und die abhängigen Ressourcen.In the tutorial, you create a virtual network, a virtual machine, and the dependent resources. Das abhängige Speicherkonto wird in einer verknüpften Vorlage definiert.The dependent storage account is defined in a linked template.
    Bereitstellen von Erweiterungen für virtuelle ComputerDeploy virtual machine extensions Führen Sie Aufgaben nach der Bereitstellung mithilfe von Erweiterungen durch.Perform post-deployment tasks by using extensions. In diesem Tutorial stellen Sie eine Skripterweiterung eines Kunden bereit, um Webserver auf dem virtuellen Computer zu installieren.In the tutorial, you deploy a customer script extension to install web server on the virtual machine.
    Bereitstellen von SQL-ErweiterungenDeploy SQL extensions Führen Sie Aufgaben nach der Bereitstellung mithilfe von Erweiterungen durch.Perform post-deployment tasks by using extensions. In diesem Tutorial stellen Sie eine Skripterweiterung eines Kunden bereit, um Webserver auf dem virtuellen Computer zu installieren.In the tutorial, you deploy a customer script extension to install web server on the virtual machine.
    Schützen von ArtefaktenSecure artifacts Schützen Sie die Artefakte, die zum Abschließen der Bereitstellungen erforderlich sind.Secure the artifacts needed to complete the deployments. In diesem Tutorial erfahren Sie, wie Sie das im Tutorial zum Bereitstellen von SQL-Erweiterungen verwendete Artefakt schützen.In the tutorial, you learn how to secure the artifact used in the Deploy SQL extensions tutorial.
    Verwenden von sicheren BereitstellungsmethodenUse safe deployment practices Enthält Informationen zum Azure-Bereitstellungs-Manager.Use Azure Deployment manager.
    Tutorial: Problembehandlung bei der Resource Manager-VorlagenbereitstellungTutorial: Troubleshoot Resource Manager template deployments Problembehandlung bei der Vorlagenbereitstellung.Troubleshoot template deployment issues.

Diese Tutorials können einzeln oder als Serie verwendet werden, um die wichtigsten Entwicklungskonzepte für Resource Manager-Vorlagen kennenzulernen.These tutorials can be used individually, or as a series to learn the major Resource Manager template development concepts.

Nächste SchritteNext steps