Share via


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 descriptionbevat, 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