Bereitstellen von Werten mithilfe von Parameterdateien
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 Standardwert1.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 namensvalue
, 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.
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.