Parameter in ARM-VorlagenParameters in ARM templates

Dieser Artikel beschreibt, wie Sie Parameter in Ihrer Azure Resource Manager-Vorlage (ARM-Vorlage) definieren und verwenden.This article describes how to define and use parameters in your Azure Resource Manager template (ARM template). Durch Bereitstellen verschiedener Werte für Parameter können Sie eine Vorlage für verschiedene Umgebungen wiederverwenden.By providing different values for parameters, you can reuse a template for different environments.

Resource Manager löst Parameterwerte vor Beginn der Bereitstellungsvorgänge auf.Resource Manager resolves parameter values before starting the deployment operations. Jedes Vorkommen des Parameters in der Vorlage wird von Resource Manager durch den aufgelösten Wert ersetzt.Wherever the parameter is used in the template, Resource Manager replaces it with the resolved value.

Jeder Parameter muss auf einen der Datentypen festgelegt werden.Each parameter must be set to one of the data types.

Definieren eines ParametersDefine parameter

Das folgende Beispiel zeigt eine einfache Parameterdefinition.The following example shows a simple parameter definition. Hiermit wird ein Parameter mit dem Namen storageSKU definiert.It defines a parameter named storageSKU. Der Parameter ist ein Zeichenfolgenwert, und er akzeptiert nur Werte, die für die beabsichtigte Verwendung gültig sind.The parameter is a string value, and only accepts values that are valid for its intended use. Wenn während der Bereitstellung kein Wert angegeben wird, verwendet der Parameter einen Standardwert.The parameter uses a default value when no value is provided during deployment.

"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."
    }
  }
}

Verwenden eines ParametersUse parameter

In der Vorlage verweisen Sie mithilfe der parameters-Funktion auf den Wert für den Parameter.In the template, you reference the value for the parameter by using the parameters function. Im folgenden Beispiel wird der Parameterwert zum Festlegen der SKU für das Speicherkonto verwendet.In the following example, the parameter value is used to set SKU for the storage account.

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

Funktionen von Azure-Ressourcen-Manager-VorlagenTemplate functions

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. Wenn für die Website kein Name angegeben ist, wird ein eindeutiger Zeichenfolgenwert erstellt und an site angehängt.When no name is provided for the site, it creates a unique string value and appends it to site. Wenn für den Hostplan kein Name angegeben ist, wird der Wert für die Website übernommen und -plan angefügt.When no name is provided for the host plan, it takes the value for the site, and appends -plan.

"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."
    }
  }
}

Im Parameterabschnitt kann weder die reference-Funktion noch eine der list-Funktionen verwendet werden.You can't use the reference function or any of the list functions in the parameters section. Diese Funktionen rufen den Laufzeitstatus einer Ressource ab und können nicht vor der Bereitstellung ausgeführt werden, wenn Parameter aufgelöst werden.These functions get the runtime state of a resource, and can't be executed before deployment when parameters are resolved.

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.

Das folgende Beispiel zeigt einen Parameter, bei dem es sich um ein Objekt handelt.The following example shows a parameter that is an object. Der Standardwert gibt die erwarteten Eigenschaften für das Objekt an.The default value shows the expected properties for the object.

"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"
        }
      ]
    }
  }
},

Sie verweisen auf die Eigenschaften des Objekts, indem Sie den Punktoperator verwenden.You reference the properties of the object by using the dot operator.

"resources": [
  {
    "type": "Microsoft.Network/virtualNetworks",
    "apiVersion": "2015-06-15",
    "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]"
          }
        }
      ]
    }
  }
]

BeispielvorlagenExample templates

In den folgenden Beispielen werden Szenarien für die Verwendung von Parametern veranschaulicht.The following examples demonstrate scenarios for using parameters.

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.

Nächste SchritteNext steps