Bereitstellen von Werten mithilfe von Parameterdateien

Abgeschlossen

In den vorherigen Lerneinheiten haben Sie die Parameterwerte in der Befehlszeile angegeben, wenn Sie eine Bereitstellung erstellt haben. Dieser Ansatz funktioniert gut, wenn Sie Ihre Bicep-Dateien schreiben und testen. Er funktioniert jedoch nicht gut, wenn Sie über viele Parameter verfügen oder Ihre Bereitstellungen automatisieren müssen. In dieser Lerneinheit erfahren Sie, wie Parameterwerte auf unterschiedliche Weise angegeben werden können.

Hinweis

Die Befehle in dieser Lerneinheit dienen der Veranschaulichung der Konzepte. Führen Sie die Befehle jetzt noch nicht aus. Sie können das Erlernte in Kürze üben.

Erstellen von Parameterdateien

Parameterdateien erleichtern die gemeinsame Angabe von Parameterwerten als Satz. In der Parameterdatei geben Sie Werte für die Parameter in Ihrer Bicep-Datei an. Parameterdateien werden mithilfe der JSON-Sprache (JavaScript Object Notation) erstellt. Sie können eine Parameterdatei angeben, wenn Sie Ihre Bicep-Vorlage bereitstellen. Eine Parameterdatei sieht wie folgt aus:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServicePlanInstanceCount": {
      "value": 3
    },
    "appServicePlanSku": {
      "value": {
        "name": "P1v3",
        "tier": "PremiumV3"
      }
    },
    "cosmosDBAccountLocations": {
      "value": [
        {
          "locationName": "australiaeast"
        },
        {
          "locationName": "southcentralus"
        },
        {
          "locationName": "westeurope"
        }
      ]
    }
  }
}

Sehen wir uns die einzelnen Teile der Parameterdatei genauer an:

  • $schema hilft Azure Resource Manager zu verstehen, dass diese Datei eine Parameterdatei ist.
  • contentVersion ist eine Eigenschaft, die Sie verwenden können, um bei Bedarf wichtige Änderungen in Ihrer Parameterdatei nachzuverfolgen. In der Regel wird sie auf ihren Standardwert 1.0.0.0 festgelegt.
  • Im Abschnitt parameters werden alle Parameter mit dem Wert aufgelistet, den Sie verwenden möchten. Der Parameterwert muss als Objekt angegeben werden. Das Objekt verfügt über eine Eigenschaft namens value, die den tatsächlich zu verwendenden Parameterwert definiert.

Im Allgemeinen erstellen Sie eine Parameterdatei für jede Umgebung. Es ist eine bewährte Methode, den Umgebungsnamen in den Namen der Parameterdatei einzufügen. Angenommen, Sie verfügen über eine Parameterdatei namens main.parameters.dev.json für Ihre Entwicklungsumgebung und eine namens main.parameters.production.json für Ihre Produktionsumgebung.

Hinweis

Stellen Sie sicher, dass Sie nur Werte für Parameter angeben, die in Ihrer Bicep-Vorlage vorhanden sind. Wenn Sie eine Bereitstellung erstellen, überprüft Azure Ihre Parameter und gibt einen Fehler aus, wenn Sie versucht haben, einen Wert für einen Parameter anzugeben, der sich nicht in der Bicep-Datei befindet.

Verwenden von Parameterdateien zur Bereitstellungszeit

Wenn Sie mit dem Befehl az deployment group create eine neue Bereitstellung erstellen, können Sie den Namen der Parameterdatei, die Sie verwenden möchten, mit dem Argument --parameters angeben:

az deployment group create \
  --template-file main.bicep \
  --parameters main.parameters.json

Wenn Sie mit dem Cmdlet New-AzResourceGroupDeployment eine neue Bereitstellung erstellen, können Sie den Namen der Parameterdatei, die Sie verwenden möchten, mit dem Argument -TemplateParameterFile angeben:

New-AzResourceGroupDeployment `
  -TemplateFile main.bicep `
  -TemplateParameterFile main.parameters.json

Außerkraftsetzung von Parameterwerten

Sie haben nun drei Möglichkeiten zum Angeben von Parameterwerten kennengelernt: Standardwerte, Befehlszeile und Parameterdateien. Es ist üblich, verschiedene Ansätze zu verwenden, um unterschiedliche Werte für denselben Parameter anzugeben. Sie haben diesen Ansatz bereits gesehen, als Sie mit Standardwerten gearbeitet haben. Wenn Sie einen Standardwert für einen Parameter erstellen, aber dann mithilfe der Befehlszeile einen anderen Wert angeben, hat der Befehlszeilenwert Vorrang. Sehen wir uns an, wie Parameterdateien in diese Rangfolge passen.

Diagramm, das die Rangfolge für Parameterwerte zeigt. Parameterdateien setzen Standardwerte außer Kraft, und Befehlszeilen-Parameterwerte setzen Parameterdateien außer Kraft.

Sie sehen, dass Parameterdateien Standardwerte außer Kraft setzen, und Befehlszeilen-Parameterwerte setzen Parameterdateien außer Kraft.

Sehen wir uns an, wie dieser Ansatz funktioniert. Hier sehen Sie eine Bicep-Beispieldatei, die drei Parameter definiert, jeweils mit Standardwerten:

param location string = resourceGroup().location
param appServicePlanInstanceCount int = 1
param appServicePlanSku object = {
  name: 'F1'
  tier: 'Free'
}

Sehen wir uns eine Parameterdatei an, die den Wert von zwei der Parameter außer Kraft setzt, aber keinen Wert für den Parameter location angibt:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServicePlanInstanceCount": {
      "value": 3
    },
    "appServicePlanSku": {
      "value": {
        "name": "P1v3",
        "tier": "PremiumV3"
      }
    }
  }
}

Wenn Sie die Bereitstellung erstellen, setzen wir außerdem den Wert für appServicePlanInstanceCount außer Kraft. Wie bei Parameterdateien verwenden Sie das Argument --parameters, fügen jedoch den Wert, den Sie überschreiben möchten, als eigenen Wert hinzu:

az deployment group create \
  --template-file main.bicep \
  --parameters main.parameters.json \
               appServicePlanInstanceCount=5

Wenn Sie die Bereitstellung erstellen, setzen Sie einen der Parameterwerte außer Kraft. Sie geben den Parameternamen so an, als ob es sich um ein Argument für das Cmdlet handelt:

New-AzResourceGroupDeployment `
  -TemplateFile main.bicep `
  -TemplateParameterFile main.parameters.json `
  -appServicePlanInstanceCount 5

Sehen wir uns die Werte an.

Parameter Wert Erklärung
location Der Standort der Ressourcengruppe. Die Bicep-Datei gibt diesen Parameter als Standardwert an, und er wird nicht außer Kraft gesetzt.
appServicePlanSku Ein Objekt mit einer name-Eigenschaft, die auf P1v3 festgelegt ist, und einer tier von PremiumV3. Der Standardwert in der Bicep-Datei wird von der Parameterdatei außer Kraft gesetzt.
appServicePlanInstanceCount 5 Der zur Bereitstellungszeit angegebene Wert setzt den Standardwert sowie den Wert in der Parameterdatei außer Kraft.

Durch Verwendung einer Mischung aus den Ansätzen zum Angeben von Parameterwerten können Sie vermeiden, Parameterwerte an vielen Stellen duplizieren zu müssen, während Sie gleichzeitig die Flexibilität erhalten, dort außer Kraft zu setzen, wo Sie dies benötigen.