Variabler i Bicep
Den här artikeln beskriver hur du definierar och använder variabler i Bicep-filen. Du använder variabler för att förenkla Bicep-filutvecklingen. I stället för att upprepa komplicerade uttryck i hela Bicep-filen definierar du en variabel som innehåller det komplicerade uttrycket. Sedan använder du variabeln efter behov i hela Bicep-filen.
Resource Manager löser variabler innan distributionsåtgärderna startas. Oavsett var variabeln används i Bicep-filen ersätter Resource Manager den med det lösta värdet.
Du är begränsad till 256 variabler i en Bicep-fil. Mer information finns i Mallgränser.
Definiera variabel
Syntaxen för att definiera en variabel är:
var <variable-name> = <variable-value>
En variabel får inte ha samma namn som en parameter, modul eller resurs.
Observera att du inte anger någon datatyp för variabeln. Typen härleds 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
Föregående exempel returnerar 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 du kan använda med variabler finns i Iterativa loopar i Bicep.
Använd 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 variabeln storageName
toLower
funktionen för att göra värdet gemener storageNamePrefix
. Funktionen uniqueString
skapar ett unikt värde från resursgrupps-ID:t. Värdena sammanfogas med 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 in något 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.
- Information om hur du använder loopsyntax finns i Iterativa loopar i Bicep.