Freigeben über


Erstellen einer Resource Manager-Parameterdatei

Anstatt Parameter als Inline-Werte in Ihrem Skript zu übergeben, können Sie eine JSON-Datei verwenden, die die Parameterwerte enthält. In diesem Artikel erfahren Sie, wie Sie eine Parameterdatei erstellen, die Sie mit einer JSON-Vorlage verwenden.

Tipp

Wir empfehlen Bicep, weil es dieselben Funktionen wie ARM-Vorlagen bietet und die Syntax einfacher zu verwenden ist. Weitere Informationen finden Sie unter Parameterdateien.

Parameterdatei

Eine Parameterdatei hat das folgende Format:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "<first-parameter-name>": {
      "value": "<first-value>"
    },
    "<second-parameter-name>": {
      "value": "<second-value>"
    }
  }
}

Es ist erwähnenswert, dass die Parameterdatei Parameterwerte als Nur-Text speichert. Aus Sicherheitsgründen wird dieser Ansatz für vertrauliche Werte wie Kennwörter nicht empfohlen. Wenn Sie einen Parameter mit einem vertraulichen Wert übergeben müssen, bewahren Sie den Wert in einem Schlüsseltresor auf. Fügen Sie dann in der Parameterdatei einen Verweis auf den Schlüsseltresor ein. Während der Bereitstellung wird der vertrauliche Wert sicher abgerufen. Weitere Informationen finden Sie unter Verwenden von Azure Key Vault zum Übergeben eines sicheren Parameterwerts während der Bereitstellung.

Die folgende Parameterdatei enthält einen Nur-Text-Wert und einen vertraulichen Wert, der in einem Schlüsseltresor gespeichert ist.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "<first-parameter-name>": {
      "value": "<first-value>"
    },
    "<second-parameter-name>": {
      "reference": {
        "keyVault": {
          "id": "<resource-id-key-vault>"
        },
        "secretName": "<secret-name>"
      }
    }
  }
}

Weitere Informationen zur Verwendung von Werten aus einem Schlüsseltresor finden Sie unter Verwenden von Azure Key Vault zum Übergeben eines sicheren Parameterwerts während der Bereitstellung.

Definieren von Parameterwerten

Um zu bestimmen, wie die Parameternamen und -werte definiert werden, öffnen Sie Ihre JSON-Vorlage, und überprüfen Sie den parameters Abschnitt. Das folgende Beispiel zeigt die Parameter der JSON-Vorlage.

"parameters": {
  "storagePrefix": {
    "type": "string",
    "maxLength": 11
  },
  "storageAccountType": {
    "type": "string",
    "defaultValue": "Standard_LRS",
    "allowedValues": [
    "Standard_LRS",
    "Standard_GRS",
    "Standard_ZRS",
    "Premium_LRS"
    ]
  }
}

In der Parameterdatei ist das erste Detail, das auffällt, der Name jedes Parameters. Die Parameternamen in der Parameterdatei müssen mit den Parameternamen in der Vorlage übereinstimmen.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
    },
    "storageAccountType": {
    }
  }
}

Beachten Sie die Parametertypskala. Die Parametertypen in der Parameterdatei müssen die gleichen Typen wie die Vorlage verwenden. In diesem Beispiel sind beide Parametertypen Zeichenfolgen.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": ""
    },
    "storageAccountType": {
      "value": ""
    }
  }
}

Überprüfen Sie die Vorlage auf Parameter mit einem Standardwert. Wenn ein Parameter über einen Standardwert verfügt, können Sie einen Wert in der Parameterdatei angeben, dies ist jedoch nicht erforderlich. Der Wert der Parameterdatei überschreibt den Standardwert der Vorlage.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "" // This value must be provided.
    },
    "storageAccountType": {
      "value": "" // This value is optional. Template will use default value if not provided.
    }
  }
}

Überprüfen Sie die zulässigen Werte der Vorlage und alle Einschränkungen, wie z. B. die maximale Länge. Diese Werte geben den Wertebereich an, den Sie für einen Parameter angeben können. In diesem Beispiel storagePrefix darf es maximal 11 Zeichen lang sein und storageAccountType muss einen zulässigen Wert angeben.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "storage"
    },
    "storageAccountType": {
      "value": "Standard_ZRS"
    }
  }
}

Hinweis

Die Parameterdatei darf nur Werte für Parameter enthalten, die in der Vorlage definiert sind. Wenn Ihre Parameterdatei zusätzliche Parameter enthält, die nicht mit den Parametern der Vorlage übereinstimmen, erhalten Sie eine Fehlermeldung.

Parametertypformate

Das folgende Beispiel zeigt die Formate verschiedener Parametertypen: Zeichenfolge, ganze Zahl, Boolean, Array und Objekt.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "exampleString": {
      "value": "test string"
    },
    "exampleInt": {
      "value": 4
    },
    "exampleBool": {
      "value": true
    },
    "exampleArray": {
      "value": [
        "value 1",
        "value 2"
      ]
    },
    "exampleObject": {
      "value": {
        "property1": "value1",
        "property2": "value2"
      }
    }
  }
}

Bereitstellen einer Vorlage mit Parameterdatei

In der Azure CLI übergeben Sie eine lokale Parameterdatei mit @ und dem Namen der Parameterdatei. Beispiel: @storage.parameters.json.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters @storage.parameters.json

Weitere Informationen finden Sie unter Bereitstellen von Ressourcen mit ARM-Vorlagen und der Azure CLI.

In Azure PowerShell übergeben Sie mithilfe des TemplateParameterFile Parameters eine lokale Parameterdatei.

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.json `
  -TemplateParameterFile C:\MyTemplates\storage.parameters.json

Weitere Informationen finden Sie unter Bereitstellen von Ressourcen mit ARM-Vorlagen und Azure PowerShell.

Hinweis

Es ist nicht möglich, eine Parameterdatei mit dem Blatt "Benutzerdefinierte Vorlage" im Portal zu verwenden.

Tipp

Wenn Sie das Azure-Ressourcengruppenprojekt in Visual Studio verwenden, stellen Sie sicher, dass die Buildaktion der Parameterdatei auf Inhalt festgelegt ist.

Dateiname

Die allgemeine Namenskonvention für die Parameterdatei besteht darin, Parameter in den Vorlagennamen aufzunehmen. Wenn Ihre Vorlage z. B. den Namenazuredeploy.jsonhat, erhält die Parameterdatei den Namenazuredeploy.parameters.json. Diese Namenskonvention hilft Ihnen, die Verbindung zwischen der Vorlage und den Parametern zu erkennen.

Für die Bereitstellung in verschiedenen Umgebungen erstellen Sie mehr als eine Parameterdatei. Wenn Sie die Parameterdateien benennen, geben Sie deren Verwendung an, z. B. Entwicklung und Produktion. Verwenden Sie z. B. azuredeploy.parameters-dev.json und azuredeploy.parameters-prod.json , um Ressourcen bereitzustellen.

Parameterrangfolge

Sie können Inlineparameter und eine lokale Parameterdatei im selben Bereitstellungsvorgang verwenden. Sie können z. B. einige Werte in der lokalen Parameterdatei angeben und andere Werte während der Bereitstellung inline hinzufügen. Wenn Sie Werte für einen Parameter sowohl in der lokalen Parameterdatei als auch in der Inline-Datei angeben, hat der Inline-Wert Vorrang.

Es ist möglich, eine externe Parameterdatei zu verwenden, indem Sie den URI für die Datei angeben. Wenn Sie eine externe Parameterdatei verwenden, können Sie keine anderen Werte entweder inline oder aus einer lokalen Datei übergeben. Alle Inline-Parameter werden ignoriert. Geben Sie alle Parameterwerte in der externen Datei an.

Parameternamenskonflikte

Wenn Ihre Vorlage einen Parameter mit dem gleichen Namen wie einer der Parameter im PowerShell-Befehl enthält, stellt PowerShell den Parameter aus Ihrer Vorlage mit dem Postfix FromTemplate. Ein in der Vorlage benannter ResourceGroupName Parameter steht z. B. in Konflikt mit dem ResourceGroupName Parameter im Cmdlet New-AzResourceGroupDeployment . Sie werden zur Eingabe eines Werts für ResourceGroupNameFromTemplate aufgefordert. Verwenden Sie Parameternamen, die nicht für Bereitstellungsbefehle verwendet werden, um diese Verwechslung zu vermeiden.

Nächste Schritte