Freigeben über


Erstellen von Parameterdateien für die Bicep-Bereitstellung

Anstatt Parameter als Inlinewerte in Ihrem Skript zu übergeben, können Sie eine Bicep-Parameterdatei mit der .bicepparam-Dateierweiterung oder eine JSON-Parameterdatei verwenden, die die Parameterwerte enthält. In diesem Artikel erfahren Sie, wie Sie Parameterdateien erstellen.

Hinweis

Die Bicep-Parameterdatei wird nur in Bicep CLI ab Version 0.18.4, Azure CLI ab Version 2.47.0 und Azure PowerShell ab Version 9.7.1 unterstützt.

Einer einzelnen Bicep-Datei können mehrere Bicep-Parameterdateien zugeordnet sein. Jede Bicep-Parameterdatei ist jedoch für eine bestimmte Bicep-Datei vorgesehen. Diese Beziehung wird mithilfe der using-Anweisung in der Bicep-Parameterdatei eingerichtet.

Sie können Bicep-Parameterdateien in JSON-Parameterdateien kompilieren, um sie mit einer Bicep-Datei bereitzustellen. Siehe build-params. Sie können eine JSON-Parameterdatei auch in eine Bicep-Parameterdatei dekompilieren. Siehe decompile-params.

Parameterdatei

Eine Parameterdatei verwendet das folgende Format:

using '<path>/<file-name>.bicep'

param <first-parameter-name> = <first-value>
param <second-parameter-name> = <second-value>

Sie können die using-Anweisung mit einer Bicep-Datei, Azure Resource Manager-JSON-Vorlagen, Bicep-Modulen und Vorlagenspezifikationen verwenden. Zum Beispiel:

using './main.bicep'
...
using './azuredeploy.json'
...
using 'br/public:avm/res/storage/storage-account:0.9.0' 
...
using 'br:myacr.azurecr.io/bicep/modules/storage:v1'
...
using 'ts:00000000-0000-0000-0000-000000000000/myResourceGroup/storageSpec:1.0'
...

Weitere Informationen finden Sie unter using-Anweisung.

Ausdrücke können mit dem Standardwert verwendet werden. Beispiel:

using 'main.bicep'

param storageName = toLower('MyStorageAccount')
param intValue = 2 + 2

Sie können auf Umgebungsvariablen als Parameterwerte verweisen. Beispiel:

using './main.bicep'

param intFromEnvironmentVariables = int(readEnvironmentVariable('intEnvVariableName'))

Sie können Variablen definieren und verwenden. Sie benötigen die Bicep CLI-Version 0.21.X oder höher, um Variablen in BICEPPARAM-Dateien verwenden zu können. Im Folgenden finden Sie einige Beispiele:

using './main.bicep'

var storagePrefix = 'myStorage'
param primaryStorageName = '${storagePrefix}Primary'
param secondaryStorageName = '${storagePrefix}Secondary'
using './main.bicep'

var testSettings = {
  instanceSize: 'Small'
  instanceCount: 1
}

var prodSettings = {
  instanceSize: 'Large'
  instanceCount: 4
}

param environmentSettings = {
  test: testSettings
  prod: prodSettings
}

Beachten Sie, 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. Anstatt den vertraulichen Wert in Ihrer Parameterdatei hinzuzufügen, verwenden Sie die getSecret-Funktion, um ihn abzurufen. Weitere Informationen finden Sie unter Verwenden von Azure Key Vault zum Übergeben eines sicheren Parameterwerts während der Bicep-Bereitstellung.

Parametertypformate

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

using './main.bicep'

param exampleString = 'test string'
param exampleInt = 2 + 2
param exampleBool = true
param exampleArray = [
  'value 1'
  'value 2'
]
param exampleObject = {
  property1: 'value 1'
  property2: 'value 2'
}

Verwenden Sie die Bicep-Syntax, um Objekte und Arrays zu deklarieren.

Dateiname

Die Bicep-Parameterdatei hat die Dateierweiterung .bicepparam.

Erstellen Sie mehr als eine Parameterdatei, wenn Sie die Bereitstellung in unterschiedlichen Umgebungen durchführen möchten. Wenn Sie mehrere Parameterdateien benennen, bezeichnen Sie deren Verwendung für die Entwicklung und Produktion. Verwenden Sie beispielsweise main.dev.bicepparam für die Entwicklung und main.prod.bicepparam für die Produktion, um Ressourcen bereitzustellen.

Definieren von Parameterwerten

Um zu bestimmen, wie die Parameternamen und -werte definiert werden, öffnen Sie Ihre Bicep-Datei. Sehen Sie sich den Abschnitt parameters in der Bicep-Datei an. Die folgenden Beispiele zeigen die Parameter aus einer Bicep-Datei namens main.bicep:

@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
param storageAccountType string = 'Standard_LRS'

In der Parameterdatei ist das erste Detail der Name der einzelnen Parameter. Der Parameternamen in der Parameterdatei müssen mit den Parameternamen in der Bicep-Datei identisch sein.

using 'main.bicep'

param storagePrefix
param storageAccountType

Die using-Anweisung verknüpft die Bicep-Parameterdatei mit einer Bicep-Datei. Weitere Informationen finden Sie unter using-Anweisung.

Nachdem Sie das Schlüsselwort „param“ in Visual Studio Code eingegeben haben, werden Sie zur Eingabe der verfügbaren Parameter und ihrer Beschreibungen aus der verknüpften Bicep-Datei aufgefordert:

Screenshot der Eingabeaufforderung der verfügbaren Parameter.

Wenn Sie mit dem Mauszeiger auf einen Parameternamen zeigen, können Sie den Parameterdatentyp und die Beschreibung sehen.

Screenshot der Parameterdatentypen und der Beschreibung.

Beachten Sie die Parametertypskala. Die Parametertypen in ihrer Parameterdatei müssen die gleichen Typen wie Ihre Bicep-Datei verwenden. In diesem Beispiel sind beide Parametertypen Zeichenfolgen.

using 'main.bicep'

param storagePrefix = ''
param storageAccountType = ''

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

using 'main.bicep'

param storagePrefix = '' // This value must be provided.
param storageAccountType = '' // This value is optional. Bicep will use default value if not provided.

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

using 'main.bicep'

param storagePrefix = 'storage'
param storageAccountType = 'Standard_ZRS'

Generieren der Parameterdatei

Sie können eine Parameterdatei auf zwei Arten erstellen: mit VS Code oder mit der Bicep CLI. Bei beiden Tools können Sie eine Bicep-Datei verwenden, um eine Parameterdatei zu generieren. Weitere Informationen zur Vorgehensweise in VS Code finden Sie unter Generieren von Parameterdateien und für die Bicep CLI unter Generieren von Parameterdateien.

Erstellen einer Bicep-Parameterdatei

Über die Bicep-Befehlszeilenschnittstelle können Sie eine Bicep-Parameterdatei als JSON-Parameterdatei erstellen. Weitere Informationen finden Sie unter Erstellen einer Parameterdatei.

Bereitstellen der Bicep-Datei mit Parameterdatei

Azure-Befehlszeilenschnittstelle

Über die Azure-Befehlszeilenschnittstelle können Sie eine Parameterdatei während Ihrer Bicep-Dateibereitstellung übergeben.

Ab Version 2.53.0 der Azure-Befehlszeilenschnittstelle und der Bicep CLI-Version 0.22.X oder höher können Sie eine Bicep-Datei mithilfe einer Bicep-Parameterdatei bereitstellen. Mit der using-Anweisung in der Bicep-Parameterdatei müssen Sie den --template-file-Schalter nicht angeben, wenn Sie eine Bicep-Parameterdatei für den --parameters-Schalter festlegen.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam

Sie können Inlineparameter und eine Standortparameterdatei im selben Bereitstellungsvorgang verwenden. Zum Beispiel:

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam \
  --parameters storageAccountType=Standard_LRS

Weitere Informationen finden Sie unter Bereitstellen von Ressourcen mit Bicep und der Azure CLI.

Azure PowerShell

Übergeben Sie in Azure PowerShell eine lokale Parameterdatei mithilfe des TemplateParameterFile-Parameters.

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

Sie können Inlineparameter und eine Standortparameterdatei im selben Bereitstellungsvorgang verwenden. Zum Beispiel:

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.bicep `
  -TemplateParameterFile C:\MyTemplates\storage.bicepparam `
  -storageAccountType Standard_LRS

Weitere Informationen finden Sie unter Bereitstellen von Ressourcen mit Bicep und Azure PowerShell. Zum Bereitstellen von BICEP-Dateien benötigen Sie Version 5.6.0 oder höher von Azure PowerShell.

Parameterrangfolge

Sie können Inlineparameter und eine lokale Parameterdatei im selben Bereitstellungsvorgang verwenden. Sie können beispielsweise einige Werte in der lokalen Parameterdatei angeben und weitere Werte während der Bereitstellung inline hinzufügen. Wenn Sie Werte für einen Parameter sowohl in der lokalen Parameterdatei als auch inline bereitstellen, haben die Inlinewerte Vorrang.

Externe Bicep-Parameterdateien werden derzeit nicht unterstützt, es ist jedoch möglich, eine externe JSON-Parameterdatei zu verwenden, indem Sie den URI der Datei bereitstellt. Geben Sie bei Verwendung einer externen Parameterdatei alle Parameterwerte in der externen Datei an, da Sie keine anderen Werte entweder inline oder aus einer lokalen Datei übergeben können. Sämtliche Inlineparameter werden ignoriert.

Parameternamenskonflikte

Wenn Ihre Bicep-Datei einen Parameter enthält, der denselben Namen hat wie einer der Parameter im PowerShell-Befehl, zeigt PowerShell den Parameter der Bicep-Datei mit dem Postfix FromTemplate an. Beispiel: Ein Parameter namens ResourceGroupName in Ihrer Bicep-Datei verursacht einen Konflikt mit dem Parameter ResourceGroupName 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