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 complexe expressies in uw Bicep-bestand te herhalen, definieert u een variabele die de gecompliceerde expressie bevat. Vervolgens gebruikt u die variabele naar behoefte in uw Bicep-bestand.
Resource Manager worden variabelen opgelost voordat de implementatiebewerkingen worden uitgevoerd. Waar de variabele ook wordt gebruikt in het Bicep-bestand, Resource Manager vervangen door de om opgeloste waarde.
Variabele definiëren
De syntaxis voor het definiëren van een variabele is:
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 op een tekenreeks zet.
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 retourneert:
{
"addToParam": {
"type": "String",
"value": "deployment parameterAddToParam"
},
"addToVar": {
"type": "String",
"value": "preset variableAddToVar"
}
}
U kunt Bicep-functies gebruiken om de variabele waarde te maken. 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 als de volgende retourneert:
"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 Bicepvoor meer informatie over de typen lussen die u met variabelen kunt gebruiken.
Variabele 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@2021-02-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 variabele de functie om de waarde in kleine storageName toLower letters te storageNamePrefix maken. De uniqueString functie maakt een unieke waarde op de resourcegroep-id. De waarden worden samenvoegd met 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 dat waarden bevat voor twee omgevingen: test 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 Inzicht in de structuur en syntaxis van Bicep-bestandenvoor meer informatie over de beschikbare eigenschappen voor variabelen.
- Zie Iteratieve lussen in Bicep voor meer informatie over het gebruik van lussyntaxis.