Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 souboru Bicep definujete proměnnou, která obsahuje složitý výraz. Tuto proměnnou pak použijete podle potřeby v celém souboru Bicep.
Resource Manager před zahájením operací nasazení přeloží proměnné. Kdykoli se proměnná použije v souboru Bicep, Resource Manager ji nahradí přeloženou hodnotou. V souboru Bicep jste omezeni na 512 proměnných. Další informace najdete v tématu Omezení šablon.
Definování proměnných
Proměnná nemůže mít stejný název jako parametr, modul nebo prostředek. Pro každou proměnnou můžete přidat jeden nebo více dekorátorů. Další informace naleznete v tématu Použití dekorátorů.
Netypové proměnné
Když definujete proměnnou bez zadání datového typu, typ se odvozuje z hodnoty. Syntaxe pro definování netypové proměnné je:
@<decorator>(<argument>)
var <variable-name> = <variable-value>
Následující příklad nastaví proměnnou na řetězec.
var stringVar = 'preset variable'
Hodnotu z parametru nebo jiné proměnné můžete použít při vytváření 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
Výstup z předchozího příkladu 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í výstup:
"uniqueStorageName": {
"type": "String",
"value": "stghzuunrvapn6sw"
}
Typové proměnné
Počínaje rozhraním příkazového řádku Bicep verze 0.36.X podporuje Biceptypové proměnné, kde explicitně deklarujete datový typ proměnné, abyste zajistili bezpečnost typů a zlepšili srozumitelnost kódu. Výhody typových proměnných:
- Detekce chyb: Kompilátor Bicep ověří, že přiřazené hodnoty odpovídají deklarovanému typu a zachytává chyby v rané fázi.
- Srozumitelnost kódu: Explicitní typy zpřehlední, jaký druh dat proměnná obsahuje.
- Podpora IntelliSense: Nástroje, jako je Visual Studio Code, poskytují lepší automatické dokončování a ověřování pro typové proměnné.
- Bezpečnost refaktoringu: Zajišťuje, aby změny přiřazení proměnných neúmyslně nepřerušovaly očekávání typu.
Pokud chcete definovat typovou proměnnou, použijte var
klíčové slovo následované názvem proměnné, typem a přiřazenou hodnotou:
var <variable-name> <data-type> = <variable-value>
Následující příklady ukazují, jak definovat typové proměnné:
var resourceName string = 'myResource'
var instanceCount int = 3
var isProduction bool = true
var tags object = { environment: 'dev' }
var subnets array = ['subnet1', 'subnet2']
U object
typů můžete definovat schéma, které vynucuje konkrétní strukturu. Kompilátor zajišťuje, že objekt dodržuje definované schéma.
var config {
name: string
count: int
enabled: bool
} = {
name: 'myApp'
count: 5
enabled: true
}
Následující příklad používá typové proměnné s dekorátory k vynucení omezení:
@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'
}
}
V tomto příkladu:
-
instanceCount
je zadán jakoint
a používá podmíněný výraz. -
resourcePrefix
je zadána jakostring
. -
tags
se zadává jakoobject
s konkrétní strukturou.
Použití iterativních smyček
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í matici 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í dekorátorů
Dekorátory jsou zapsány ve formátu @expression
a jsou umístěny nad deklaracemi proměnných. V následující tabulce jsou uvedeny dostupné dekorátory proměnných.
Dekoratér | Důvod | Popis |
---|---|---|
popis | řetězec | Zadejte popisy proměnné. |
exportu | Žádná | Označuje, že proměnná je k dispozici pro import jiným souborem Bicep. |
Dekorátory jsou v oboru názvů sys. Pokud potřebujete odlišit dekorátor od jiné položky se stejným názvem, předkožte dekorátorem .sys
Pokud například váš soubor Bicep obsahuje proměnnou s názvem description
, musíte přidat obor názvů sys při použití dekorátoru popisu .
Popis
Pokud chcete přidat vysvětlení, přidejte popis do deklarace proměnné. Příklad:
@description('Create a unique storage account name.')
var storageAccountName = uniqueString(resourceGroup().id)
Text ve formátu Markdown lze použít pro text popisu.
Vývoz
Slouží @export()
ke sdílení proměnné s jinými soubory Bicep. Další informace najdete v tématu Export proměnných, typů a funkcí.
Proměnné konfigurace
Můžete definovat proměnné, které obsahují 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. Předejte jednu z těchto hodnot během nasazení.
@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
- Informace o dostupných vlastnostech proměnných najdete v tématu Vysvětlení struktury a syntaxe souborů Bicep.
- Další informace o použití syntaxe smyčky najdete v tématu Iterativní smyčky v Bicep.