Variablen in Bicep
Dieser Artikel beschreibt, wie Sie Variablen in Ihrer Bicep-Datei definieren und verwenden. Sie verwenden Variablen, um die Entwicklung Ihrer Bicep-Dateien zu vereinfachen. Anstatt komplizierte Ausdrücke in der Bicep-Datei zu wiederholen, definieren Sie eine Variable, die den komplizierten Ausdruck enthält. Anschließend verwenden Sie diese Variable nach Bedarf in der gesamten Bicep-Datei.
Resource Manager löst Variablen vor Beginn der Bereitstellungsvorgänge auf. Jedes Vorkommen der Variablen in der Bicep-Datei wird von Resource Manager durch den aufgelösten Wert ersetzt.
Die Anzahl der Variablen in einer Bicep-Datei ist auf 512 beschränkt. Weitere Informationen finden Sie unter Vorlagengrenzwerte.
Definieren von Variablen
Die Syntax zum Definieren einer Variablen lautet:
@<decorator>(<argument>)
var <variable-name> = <variable-value>
Eine Variable darf nicht denselben Namen wie ein Parameter, ein Modul oder eine Ressource haben.
Beachten Sie, dass Sie keinen Datentyp für die Variable angeben. Der Typ wird aus dem Wert abgeleitet. Im folgenden Beispiel wird eine Variable auf eine Zeichenfolge festgelegt.
var stringVar = 'example value'
Sie können beim Erstellen der Variablen den Wert eines Parameters oder einer anderen Variablen verwenden.
param inputValue string = 'deployment parameter'
var stringVar = 'preset variable'
var concatToVar = '${stringVar}AddToVar'
var concatToParam = '${inputValue}AddToParam'
output addToVar string = concatToVar
output addToParam string = concatToParam
Im vorherigen Beispiel wird Folgendes zurückgegeben:
{
"addToParam": {
"type": "String",
"value": "deployment parameterAddToParam"
},
"addToVar": {
"type": "String",
"value": "preset variableAddToVar"
}
}
Sie können Bicep-Funktionen verwenden, um den Variablenwert zu erstellen. Im folgenden Beispiel werden Bicep-Funktionen verwendet, um einen Zeichenfolgenwert für einen Speicherkontonamen zu erstellen.
param storageNamePrefix string = 'stg'
var storageName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'
output uniqueStorageName string = storageName
Im folgenden Beispiel wird ein Wert wie der folgende zurückgegeben:
"uniqueStorageName": {
"type": "String",
"value": "stghzuunrvapn6sw"
}
Sie können iterative Schleifen verwenden, wenn Sie eine Variable definieren. Im folgenden Beispiel wird ein Array von Objekten mit drei Eigenschaften erstellt.
param itemCount int = 3
var objectArray = [for i in range(0, itemCount): {
name: 'myDataDisk${(i + 1)}'
diskSizeGB: '1'
diskIndex: i
}]
output arrayResult array = objectArray
Die Ausgabe gibt ein Array mit den folgenden Elementen zurück:
[
{
"name": "myDataDisk1",
"diskSizeGB": "1",
"diskIndex": 0
},
{
"name": "myDataDisk2",
"diskSizeGB": "1",
"diskIndex": 1
},
{
"name": "myDataDisk3",
"diskSizeGB": "1",
"diskIndex": 2
}
]
Weitere Informationen zu den Schleifentypen, die Sie mit Variablen verwenden können, finden Sie unter Iterative Schleifen in Bicep.
Verwenden von Decorator-Elementen
Decorator-Elemente werden im Format @expression
geschrieben und oberhalb von Variablendeklarationen platziert. In der folgenden Tabelle werden die für Variablen verfügbaren Decorator-Elemente gezeigt.
Decorator | Argument | Beschreibung |
---|---|---|
Beschreibung | string | Geben Sie Beschreibungen für die Variable an. |
Export | none | Gibt an, dass die Variable für den Import durch eine andere Bicep-Datei verfügbar ist. |
Decorators befinden sich im sys-Namespace. Wenn Sie diesen Decorator von einem anderen Element gleichen Namens unterscheiden müssen, stellen Sie dem Decorator sys
voran. Wenn Ihre Bicep-Datei z. B. eine Variable mit dem Namen description
enthält, müssen Sie den sys-Namespace hinzufügen, wenn Sie den Decorator description verwenden.
Beschreibung
Um eine Erklärung hinzuzufügen, fügen Sie der Variablendeklaration eine Beschreibung hinzu. Zum Beispiel:
@description('Create a unique storage account name.')
var storageAccountName = uniqueString(resourceGroup().id)
Mit Markdown formatierter Text kann für den Beschreibungstext verwendet werden.
Exportieren
Verwenden Sie @export()
, um die Variable mit anderen Bicep-Dateien zu teilen. Weitere Informationen finden Sie unter Exportieren von Variablen, Typen und Funktionen.
Verwenden von Variablen
Im folgenden Beispiel wird gezeigt, wie die Variable für eine Ressourceneigenschaft verwendet wird. Durch Angabe des Variablennamens verweisen Sie auf den Wert der Variable: storageName
.
param rgLocation string
param storageNamePrefix string = 'STG'
var storageName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'
resource demoAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageName
location: rgLocation
kind: 'Storage'
sku: {
name: 'Standard_LRS'
}
}
output stgOutput string = storageName
Da Speicherkontonamen Kleinbuchstaben verwenden müssen, verwendet die Variable storageName
die Funktion toLower
, um den Wert storageNamePrefix
in Kleinbuchstaben zu schreiben. Die Funktion uniqueString
erstellt einen eindeutigen Wert aus der Ressourcengruppen-ID. Die Werte werden zu einer Zeichenfolge verkettet.
Konfigurationsvariablen
Sie können Variablen definieren, die zugehörige Werte zum Konfigurieren einer Umgebung enthalten. Die Variable wird als ein Objekt mit den Werten definiert. Das folgende Beispiel zeigt ein Objekt, das Werte für zwei Umgebungen enthält: test und prod. Sie übergeben einen dieser Werte während der Bereitstellung.
@allowed([
'test'
'prod'
])
param environmentName string
var environmentSettings = {
test: {
instanceSize: 'Small'
instanceCount: 1
}
prod: {
instanceSize: 'Large'
instanceCount: 4
}
}
output instanceSize string = environmentSettings[environmentName].instanceSize
output instanceCount int = environmentSettings[environmentName].instanceCount
Nächste Schritte
- Weitere Informationen zu den verfügbaren Eigenschaften für Variablen finden Sie unter Verstehen der Struktur und Syntax von Bicep-Dateien.
- Informationen zur Verwendung der Schleifensyntax finden Sie unter Iterative Schleifen in Bicep.