Variabler i Bicep
Den här artikeln beskriver hur du definierar och använder variabler i din Bicep-fil. Du använder variabler för att förenkla utvecklingen av Bicep-filer. I stället för att upprepa komplicerade uttryck i bicep-filen definierar du en variabel som innehåller det komplicerade uttrycket. Sedan använder du variabeln efter behov i bicep-filen.
Resource Manager löser variabler innan distributionsåtgärder startas. Oavsett var variabeln används i Bicep-filen Resource Manager den med det lösta värdet.
Definiera variabel
Syntaxen för att definiera en variabel är:
var <variable-name> = <variable-value>
En variabel kan inte ha samma namn som en parameter, modul eller resurs.
Observera att du inte anger någon datatyp för variabeln. Typen härförs från värdet . I följande exempel anges en variabel till en sträng.
var stringVar = 'example value'
Du kan använda värdet från en parameter eller en annan variabel när du skapar variabeln.
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
Föregående exempel returnerar:
{
"addToParam": {
"type": "String",
"value": "deployment parameterAddToParam"
},
"addToVar": {
"type": "String",
"value": "preset variableAddToVar"
}
}
Du kan använda Bicep-funktioner för att konstruera variabelvärdet. I följande exempel används Bicep-funktioner för att skapa ett strängvärde för ett lagringskontonamn.
param storageNamePrefix string = 'stg'
var storageName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'
output uniqueStorageName string = storageName
I föregående exempel returneras ett värde som liknar följande:
"uniqueStorageName": {
"type": "String",
"value": "stghzuunrvapn6sw"
}
Du kan använda iterativa loopar när du definierar en variabel. I följande exempel skapas en matris med objekt med tre egenskaper.
param itemCount int = 3
var objectArray = [for i in range(0, itemCount): {
name: 'myDataDisk${(i + 1)}'
diskSizeGB: '1'
diskIndex: i
}]
output arrayResult array = objectArray
Utdata returnerar en matris med följande värden:
[
{
"name": "myDataDisk1",
"diskSizeGB": "1",
"diskIndex": 0
},
{
"name": "myDataDisk2",
"diskSizeGB": "1",
"diskIndex": 1
},
{
"name": "myDataDisk3",
"diskSizeGB": "1",
"diskIndex": 2
}
]
Mer information om vilka typer av loopar som du kan använda med variabler finns i Iterativa loopar i Bicep.
Använda variabel
I följande exempel visas hur du använder variabeln för en resursegenskap. Du refererar till värdet för variabeln genom att ange variabelns namn: storageName .
param rgLocation string
param storageNamePrefix string = 'STG'
var storageName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'
resource demoAccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
name: storageName
location: rgLocation
kind: 'Storage'
sku: {
name: 'Standard_LRS'
}
}
output stgOutput string = storageName
Eftersom lagringskontonamn måste använda gemener använder storageName variabeln toLower funktionen för att göra värdet storageNamePrefix till gemener. Funktionen uniqueString skapar ett unikt värde från resursgruppens ID. Värdena sammanfogas till en sträng.
Konfigurationsvariabler
Du kan definiera variabler som innehåller relaterade värden för att konfigurera en miljö. Du definierar variabeln som ett objekt med värdena. I följande exempel visas ett -objekt som innehåller värden för två miljöer – test och prod. Skicka ett av dessa värden under distributionen.
@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ästa steg
- Mer information om tillgängliga egenskaper för variabler finns i Förstå strukturen och syntaxen för Bicep-filer.
- Mer information om hur du använder loopsyntax finns i Iterativa loopar i Bicep.