Proměnné v Bicepu
Tento článek popisuje, jak definovat a používat proměnné v souboru Bicep. Proměnné se používají ke zjednodušení vývoje souborů Bicep. Místo opakování složitých výrazů v celém souboru Bicep definujete proměnnou, která obsahuje složitý výraz. Pak tuto proměnnou podle potřeby použijete v celém souboru Bicep.
Resource Manager před zahájením operací nasazení překládá proměnné. Bez ohledu na to, kde se proměnná používá v souboru Bicep, Resource Manager nahradí přeloženou hodnotou.
Definování proměnné
Syntaxe pro definování proměnné je následující:
var <variable-name> = <variable-value>
Proměnná nemůže mít stejný název jako parametr, modul nebo prostředek.
Všimněte si, že pro proměnnou nezadáte datový typ. Typ je odvozen z hodnoty . Následující příklad nastaví proměnnou na řetězec.
var stringVar = 'example value'
Při vytváření proměnné můžete použít hodnotu z parametru nebo jiné proměnné.
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
Předchozí příklad vrátí:
{
"addToParam": {
"type": "String",
"value": "deployment parameterAddToParam"
},
"addToVar": {
"type": "String",
"value": "preset variableAddToVar"
}
}
K vytvoření hodnoty proměnné můžete použít funkce Bicep. Následující příklad používá funkce Bicep k vytvoření řetězcové hodnoty pro název účtu úložiště.
param storageNamePrefix string = 'stg'
var storageName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'
output uniqueStorageName string = storageName
Předchozí příklad vrátí hodnotu jako následující:
"uniqueStorageName": {
"type": "String",
"value": "stghzuunrvapn6sw"
}
Při definování proměnné můžete použít iterativní smyčky. Následující příklad vytvoří pole objektů se třemi vlastnostmi.
param itemCount int = 3
var objectArray = [for i in range(0, itemCount): {
name: 'myDataDisk${(i + 1)}'
diskSizeGB: '1'
diskIndex: i
}]
output arrayResult array = objectArray
Výstup vrátí pole s následujícími hodnotami:
[
{
"name": "myDataDisk1",
"diskSizeGB": "1",
"diskIndex": 0
},
{
"name": "myDataDisk2",
"diskSizeGB": "1",
"diskIndex": 1
},
{
"name": "myDataDisk3",
"diskSizeGB": "1",
"diskIndex": 2
}
]
Další informace o typech smyček, které můžete použít s proměnnými, najdete v tématu Iterativní smyčky v Bicep.
Použití proměnné
Následující příklad ukazuje, jak použít proměnnou pro vlastnost prostředku. Na hodnotu proměnné odkazujete tak, že zadáte název proměnné: 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
Vzhledem k tomu, že názvy účtů úložiště musí obsahovat malá písmena, proměnná používá funkci k tomu, aby storageName toLower byla hodnota storageNamePrefix malá. Funkce uniqueString vytvoří jedinečnou hodnotu z ID skupiny prostředků. Hodnoty jsou zřetězovány na řetězec.
Proměnné konfigurace
Můžete definovat proměnné, které udržují související hodnoty pro konfiguraci prostředí. Proměnnou definujete jako objekt s hodnotami . Následující příklad ukazuje objekt, který obsahuje hodnoty pro dvě prostředí – test a prod. Během nasazování předejte jednu z těchto hodnot.
@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
Další kroky
- Další informace o dostupných vlastnostech proměnných najdete v tématu Principy struktury a syntaxe souborů Bicep.
- Další informace o používání syntaxe smyčky najdete v tématu Iterativní smyčky v Bicep.