Zmienne w Bicep
W tym artykule opisano sposób definiowania i używania zmiennych w pliku Bicep. Zmienne służą do uproszczenia tworzenia plików Bicep. Zamiast powtarzać skomplikowane wyrażenia w pliku Bicep, należy zdefiniować zmienną zawierającą skomplikowane wyrażenie. Następnie użyjesz tej zmiennej zgodnie z potrzebami w pliku Bicep.
Usługa Resource Manager rozwiązuje zmienne przed rozpoczęciem operacji wdrażania. Wszędzie tam, gdzie zmienna jest używana w pliku Bicep, usługa Resource Manager zastępuje ją rozpoznaną wartością.
W pliku Bicep można ograniczyć do 512 zmiennych. Aby uzyskać więcej informacji, zobacz Limity szablonów.
Definiowanie zmiennych
Składnia definiująca zmienną to:
@<decorator>(<argument>)
var <variable-name> = <variable-value>
Zmienna nie może mieć takiej samej nazwy jak parametr, moduł lub zasób.
Zwróć uwagę, że nie określasz typu danych dla zmiennej. Typ jest wnioskowany z wartości. W poniższym przykładzie zmienna jest ustawiana na ciąg.
var stringVar = 'example value'
Wartość można użyć z parametru lub innej zmiennej podczas konstruowania zmiennej.
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
Powyższy przykład zwraca następujące dane:
{
"addToParam": {
"type": "String",
"value": "deployment parameterAddToParam"
},
"addToVar": {
"type": "String",
"value": "preset variableAddToVar"
}
}
Aby utworzyć wartość zmiennej, można użyć funkcji Bicep. W poniższym przykładzie użyto funkcji Bicep do utworzenia wartości ciągu dla nazwy konta magazynu.
param storageNamePrefix string = 'stg'
var storageName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'
output uniqueStorageName string = storageName
Powyższy przykład zwraca wartość podobną do następującej:
"uniqueStorageName": {
"type": "String",
"value": "stghzuunrvapn6sw"
}
Pętle iteracyjne można używać podczas definiowania zmiennej. Poniższy przykład tworzy tablicę obiektów z trzema właściwościami.
param itemCount int = 3
var objectArray = [for i in range(0, itemCount): {
name: 'myDataDisk${(i + 1)}'
diskSizeGB: '1'
diskIndex: i
}]
output arrayResult array = objectArray
Dane wyjściowe zwracają tablicę z następującymi wartościami:
[
{
"name": "myDataDisk1",
"diskSizeGB": "1",
"diskIndex": 0
},
{
"name": "myDataDisk2",
"diskSizeGB": "1",
"diskIndex": 1
},
{
"name": "myDataDisk3",
"diskSizeGB": "1",
"diskIndex": 2
}
]
Aby uzyskać więcej informacji na temat typów pętli, których można używać ze zmiennymi, zobacz Iteracyjne pętle w Bicep.
Korzystanie z dekoratorów
Dekoratory są zapisywane w formacie @expression
i są umieszczane powyżej deklaracji zmiennych. W poniższej tabeli przedstawiono dostępne dekoratory zmiennych.
Dekorator | Argument | opis |
---|---|---|
opis | string | Podaj opisy zmiennej. |
export | Brak | Wskazuje, że zmienna jest dostępna do zaimportowania przez inny plik Bicep. |
Dekoratory znajdują się w przestrzeni nazw systemu. Jeśli musisz odróżnić dekorator od innego elementu o tej samej nazwie, należy poprzeć dekorator za pomocą polecenia sys
. Jeśli na przykład plik Bicep zawiera zmienną o nazwie description
, należy dodać przestrzeń nazw systemu podczas korzystania z dekoratora opisu .
opis
Aby dodać wyjaśnienie, dodaj opis do deklaracji zmiennej. Na przykład:
@description('Create a unique storage account name.')
var storageAccountName = uniqueString(resourceGroup().id)
Tekst w formacie markdown może służyć do tekstu opisu.
Export
Użyj @export()
polecenia , aby udostępnić zmienną innym plikom Bicep. Aby uzyskać więcej informacji, zobacz Eksportowanie zmiennych, typów i funkcji.
Używanie zmiennych
W poniższym przykładzie pokazano, jak używać zmiennej dla właściwości zasobu. Należy odwołać się do wartości zmiennej, podając nazwę zmiennej: 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
Ponieważ nazwy kont magazynu muszą używać małych liter, storageName
zmienna używa toLower
funkcji do tworzenia storageNamePrefix
małych liter. Funkcja uniqueString
tworzy unikatową wartość na podstawie identyfikatora grupy zasobów. Wartości są łączone z ciągiem.
Zmienne konfiguracji
Zmienne przechowujące powiązane wartości do konfigurowania środowiska można zdefiniować. Zmienną należy zdefiniować jako obiekt z wartościami. W poniższym przykładzie pokazano obiekt, który przechowuje wartości dla dwóch środowisk — test i prod. Przekaż jedną z tych wartości podczas wdrażania.
@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
Następne kroki
- Aby dowiedzieć się więcej o dostępnych właściwościach zmiennych, zobacz Omówienie struktury i składni plików Bicep.
- Aby dowiedzieć się więcej na temat używania składni pętli, zobacz Iteracyjne pętle w Bicep.