Variabler i Bicep
Den här artikeln beskriver hur du definierar och använder variabler i Bicep-filen. Du kan använda 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 512 variabler i en Bicep-fil. Mer information finns i Mallgränser.
Definiera variabler
Syntaxen för att definiera en variabel är:
@<decorator>(<argument>)
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ä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ända dekoratörer
Dekoratörer är skrivna i formatet @expression
och placeras ovanför variabeldeklarationer. I följande tabell visas tillgängliga dekoratörer för variabler.
Dekoratör | Argument | beskrivning |
---|---|---|
beskrivning | sträng | Ange beskrivningar för variabeln. |
export | inget | Anger att variabeln är tillgänglig för import av en annan Bicep-fil. |
Dekoratörer finns i sys-namnområdet. Om du behöver skilja en dekoratör från ett annat objekt med samma namn, förorda dekoratören med sys
. Om din Bicep-fil till exempel innehåller en variabel med namnet description
måste du lägga till sys-namnområdet när du använder beskrivningsdekoratören.
beskrivning
Lägg till en förklaring genom att lägga till en beskrivning i variabeldeklarationen. Till exempel:
@description('Create a unique storage account name.')
var storageAccountName = uniqueString(resourceGroup().id)
Markdown-formaterad text kan användas för beskrivningstexten.
Export
Använd @export()
för att dela variabeln med andra Bicep-filer. Mer information finns i Exportera variabler, typer och funktioner.
Använda variabler
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@2023-04-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 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 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.
- Mer information om hur du använder loopsyntax finns i Iterativa loopar i Bicep.