Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
En variabel kan inte ha samma namn som en parameter, modul eller resurs. Du kan lägga till en eller flera dekoratörer för varje variabel. Mer information finns i Använda dekoratörer.
Otypade variabler
När du definierar en variabel utan att ange en datatyp härleds typen från värdet. Syntaxen för att definiera en otypad variabel är:
@<decorator>(<argument>)
var <variable-name> = <variable-value>
I följande exempel anges en variabel till en sträng.
var stringVar = 'preset variable'
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
Utdata från 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 utdata:
"uniqueStorageName": {
"type": "String",
"value": "stghzuunrvapn6sw"
}
Inskrivna variabler
Från och med Bicep CLI version 0.36.X stöder Bicep typvariabler, där du uttryckligen deklarerar datatypen för en variabel för att säkerställa typsäkerhet och förbättra kodens tydlighet. Fördelarna med typvariabler:
- Felidentifiering: Bicep-kompilatorn verifierar att tilldelade värden matchar den deklarerade typen och fångar fel tidigt.
- Kodklarhet: Explicita typer gör det tydligt vilken typ av data en variabel innehåller.
- Stöd för Intellisense: Verktyg som Visual Studio Code ger bättre automatisk komplettering och validering för inskrivna variabler.
- Refaktoriseringssäkerhet: Säkerställer att ändringar i variabeltilldelningar inte oavsiktligt bryter typförväntningarna.
Om du vill definiera en typvariabel använder du nyckelordet var följt av variabelnamnet, typen och det tilldelade värdet:
var <variable-name> <data-type> = <variable-value>
I följande exempel visas hur du definierar typade variabler:
var resourceName string = 'myResource'
var instanceCount int = 3
var isProduction bool = true
var tags object = { environment: 'dev' }
var subnets array = ['subnet1', 'subnet2']
För object typer kan du definiera ett schema för att framtvinga en specifik struktur. Kompilatorn ser till att objektet följer det definierade schemat.
var config {
name: string
count: int
enabled: bool
} = {
name: 'myApp'
count: 5
enabled: true
}
I följande exempel används typvariabler med dekoratörer för att framtvinga begränsningar:
@description('The environment to deploy to')
@allowed(['dev', 'test', 'prod'])
param environment string = 'dev'
var instanceCount int = environment == 'prod' ? 5 : 2
var resourcePrefix string = 'app'
var tags {
environment: string
deployedBy: string
} = {
environment: environment
deployedBy: 'Bicep'
}
resource storage 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: '${resourcePrefix}storage${instanceCount}'
location: 'westus'
tags: tags
kind: 'Storage'
sku: {
name: 'Standard_LRS'
}
}
I det här exemplet:
-
instanceCountskrivs somintoch använder ett villkorsuttryck. -
resourcePrefixskrivs somstring. -
tagsskrivs somobjectmed en specifik struktur.
Använda iterativa loopar
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 | Argumentation | beskrivning |
|---|---|---|
| beskrivning | sträng | Ange beskrivningar för variabeln. |
| exportera | 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 descriptionmå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.
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.