Variabelen in Bicep
In dit artikel wordt beschreven hoe u variabelen in uw Bicep-bestand definieert en gebruikt. U gebruikt variabelen om de ontwikkeling van bicep-bestanden te vereenvoudigen. In plaats van ingewikkelde expressies in uw Bicep-bestand te herhalen, definieert u een variabele die de gecompliceerde expressie bevat. Vervolgens gebruikt u die variabele indien nodig in uw Bicep-bestand.
Resource Manager lost variabelen op voordat de implementatiebewerkingen worden gestart. Waar de variabele ook wordt gebruikt in het Bicep-bestand, vervangt Resource Manager deze door de opgeloste waarde.
U bent beperkt tot 512 variabelen in een Bicep-bestand. Zie Sjabloonlimieten voor meer informatie.
Variabelen definiëren
De syntaxis voor het definiëren van een variabele is:
@<decorator>(<argument>)
var <variable-name> = <variable-value>
Een variabele kan niet dezelfde naam hebben als een parameter, module of resource.
U ziet dat u geen gegevenstype voor de variabele opgeeft. Het type wordt afgeleid van de waarde. In het volgende voorbeeld wordt een variabele ingesteld op een tekenreeks.
var stringVar = 'example value'
U kunt de waarde van een parameter of een andere variabele gebruiken bij het maken van de variabele.
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
In het voorgaande voorbeeld wordt het volgende geretourneerd:
{
"addToParam": {
"type": "String",
"value": "deployment parameterAddToParam"
},
"addToVar": {
"type": "String",
"value": "preset variableAddToVar"
}
}
U kunt Bicep-functies gebruiken om de variabelewaarde samen te stellen. In het volgende voorbeeld worden Bicep-functies gebruikt om een tekenreekswaarde te maken voor de naam van een opslagaccount.
param storageNamePrefix string = 'stg'
var storageName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'
output uniqueStorageName string = storageName
In het voorgaande voorbeeld wordt een waarde geretourneerd die er als volgt uitziet:
"uniqueStorageName": {
"type": "String",
"value": "stghzuunrvapn6sw"
}
U kunt iteratieve lussen gebruiken bij het definiëren van een variabele. In het volgende voorbeeld wordt een matrix met objecten met drie eigenschappen gemaakt.
param itemCount int = 3
var objectArray = [for i in range(0, itemCount): {
name: 'myDataDisk${(i + 1)}'
diskSizeGB: '1'
diskIndex: i
}]
output arrayResult array = objectArray
De uitvoer retourneert een matrix met de volgende waarden:
[
{
"name": "myDataDisk1",
"diskSizeGB": "1",
"diskIndex": 0
},
{
"name": "myDataDisk2",
"diskSizeGB": "1",
"diskIndex": 1
},
{
"name": "myDataDisk3",
"diskSizeGB": "1",
"diskIndex": 2
}
]
Zie Iteratieve lussen in Bicep voor meer informatie over de typen lussen die u met variabelen kunt gebruiken.
Decorators gebruiken
Decorators worden geschreven in de indeling @expression
en worden boven variabeledeclaraties geplaatst. In de volgende tabel ziet u de beschikbare decorators voor variabelen.
Decorateur | Argument | Beschrijving |
---|---|---|
beschrijving | tekenreeks | Geef beschrijvingen op voor de variabele. |
exporteren | Geen | Geeft aan dat de variabele beschikbaar is voor importeren door een ander Bicep-bestand. |
Decorators bevinden zich in de sys-naamruimte. Als u een decorator wilt onderscheiden van een ander item met dezelfde naam, moet u de decorator vooraf laten gaan door sys
. Als uw Bicep-bestand bijvoorbeeld een variabele met de naam description
bevat, moet u de sys-naamruimte toevoegen wanneer u de beschrijvings decorator gebruikt.
Beschrijving
Als u uitleg wilt toevoegen, voegt u een beschrijving toe aan de variabeledeclaratie. Voorbeeld:
@description('Create a unique storage account name.')
var storageAccountName = uniqueString(resourceGroup().id)
Markdown-opgemaakte tekst kan worden gebruikt voor de beschrijvingstekst.
Export
Gebruik @export()
deze om de variabele te delen met andere Bicep-bestanden. Zie Variabelen, typen en functies exporteren voor meer informatie.
Variabelen gebruiken
In het volgende voorbeeld ziet u hoe u de variabele gebruikt voor een resource-eigenschap. U verwijst naar de waarde voor de variabele door de naam van de variabele op te geven: 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
Omdat namen van opslagaccounts kleine letters moeten gebruiken, gebruikt de storageName
variabele de toLower
functie om de storageNamePrefix
waarde in kleine letters te maken. De uniqueString
functie maakt een unieke waarde op basis van de resourcegroep-id. De waarden worden samengevoegd tot een tekenreeks.
Configuratievariabelen
U kunt variabelen definiëren die gerelateerde waarden bevatten voor het configureren van een omgeving. U definieert de variabele als een object met de waarden. In het volgende voorbeeld ziet u een object met waarden voor twee omgevingen: testen en prod. Geef een van deze waarden door tijdens de implementatie.
@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
Volgende stappen
- Zie De structuur en syntaxis van Bicep-bestanden begrijpen voor meer informatie over de beschikbare eigenschappen voor variabelen.
- Zie Iteratieve lussen in Bicep voor meer informatie over het gebruik van lussyntaxis.