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 vereinfachen das Angeben von Parameterwerten als Satz. Innerhalb der Parameterdatei geben Sie Werte für die Parameter in Ihrer Bicep-Datei an. Parameterdateien werden mithilfe einer Bicep-Parameterdatei mit der .bicepparam Dateierweiterung oder einer JSON-Parameterdatei erstellt, die die Parameterwerte enthält. Sie können eine Parameterdatei angeben, wenn Sie Ihre Bicep-Vorlage bereitstellen. So sieht eine JSON-Parameterdatei 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 jeden Teil 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 erhebliche Änderungen in der 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 empfiehlt sich, den Umgebungsnamen in den Namen der Parameterdatei einzuschließen. Sie können z. B. über eine Parameterdatei namensmain.parameters.dev.json für Ihre Entwicklungsumgebung und eine mit dem Namenmain.parameters.production.json für Ihre Produktionsumgebung verfügen.

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 Sie Parameterdateien während der Bereitstellung

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

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

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

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

Parameterwerte überschreiben

Sie haben nun drei Möglichkeiten zum Angeben von Parameterwerten kennengelernt: Standardwerte, Befehlszeilen- 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 Reihenfolge der Rangfolge passen.

Diagramm, das die Reihenfolge der Rangfolge für Parameterwerte zeigt. Parameterdateien überschreiben Standardwerte und Befehlszeilenparameterwerte überschreiben Parameterdateien.

Sie können sehen, dass Parameterdateien Standardwerte außer Kraft setzen, und Befehlszeilenparameterwerte überschreiben Parameterdateien.

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 ___location Parameter 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 --parameters Argument, fügen aber den Wert hinzu, den Sie als eigenen Wert außer Kraft setzen möchten:

az deployment group create \
  --name main \
  --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 `
  -Name main `
  -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 überschrieben.
appServicePlanInstanceCount 5 Der zur Bereitstellungszeit angegebene Wert setzt den Standardwert und 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.