Bicep 中的變數
本文說明如何在 Bicep 檔案中定義和使用變數。 您可使用變數來簡化 Bicep 檔案的開發。 您可定義包含複雜運算式的變數,而不需在整個 Bicep 檔案中重複執行複雜運算式。 如此一來,您就能在整個 Bicep 檔案中視需要使用該變數。
Resource Manager 會在開始部署作業之前解析變數。 無論在 Bicep 檔案中的任何地方使用該變數,Resource Manager 都會將其取代為已解析的值。
Bicep 檔案中限制使用 512 個變數。 如需詳細資訊,請參閱範本限制。
定義變數
用於定義變數的語法為:
@<decorator>(<argument>)
var <variable-name> = <variable-value>
變數的名稱不能與參數、模組或資源的名稱相同。
請注意,您不會指定變數的 資料類型。 此類型是從值推斷而來。 下列範例會將變數設定為字串。
var stringVar = 'example value'
建構變數時,可以使用參數或其他變數中的值。
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
上述範例會傳回:
{
"addToParam": {
"type": "String",
"value": "deployment parameterAddToParam"
},
"addToVar": {
"type": "String",
"value": "preset variableAddToVar"
}
}
您可以使用 Bicep 函式來建立變數值。 下列範例會使用 Bicep 函式來建立儲存體帳戶名稱的字串值。
param storageNamePrefix string = 'stg'
var storageName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'
output uniqueStorageName string = storageName
上述範例會傳回類似以下的值:
"uniqueStorageName": {
"type": "String",
"value": "stghzuunrvapn6sw"
}
您可以在定義變數時使用反覆式迴圈。 下列範例會建立具有三個屬性的物件陣列。
param itemCount int = 3
var objectArray = [for i in range(0, itemCount): {
name: 'myDataDisk${(i + 1)}'
diskSizeGB: '1'
diskIndex: i
}]
output arrayResult array = objectArray
輸出會傳回包含下列值的陣列:
[
{
"name": "myDataDisk1",
"diskSizeGB": "1",
"diskIndex": 0
},
{
"name": "myDataDisk2",
"diskSizeGB": "1",
"diskIndex": 1
},
{
"name": "myDataDisk3",
"diskSizeGB": "1",
"diskIndex": 2
}
]
如需深入了解可搭配變數使用的迴圈類型,請參閱 Bicep 中的反覆式迴圈。
使用裝飾項目
裝飾項目是以 @expression
格式撰寫的,放置於變數宣告上方。 下表顯示變數的可用裝飾項目。
裝飾項目 | Argument | 描述 |
---|---|---|
description | 字串 | 提供變數的描述。 |
export | none | 表示變數可供其他 Bicep 檔案匯入。 |
裝飾項目在 sys 命名空間中。 如果您需要區別裝飾項目與具有相同名稱的另一個項目,請在裝飾項目前面加上 sys
。 例如,如果您的 Bicep 檔案包含名為 description
的變數,則在使用描述裝飾項目時,您必須新增 sys 命名空間。
描述
若要新增說明,請將描述新增至變數宣告。 例如:
@description('Create a unique storage account name.')
var storageAccountName = uniqueString(resourceGroup().id)
Markdown 格式的文字可用於描述文字。
Export
使用 @export()
與其他 Bicep 檔案共用變數。 如需詳細資訊,請參閱匯出變數、類型和函式。
使用變數
下列範例顯示如何將變數用於資源屬性。 您可以藉由提供變數的名稱來參考變數的值: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
因為儲存體帳戶名稱必須使用小寫字母,因此 storageName
變數會使用 toLower
函式使 storageNamePrefix
值變成小寫。 uniqueString
函式會從資源群組識別碼建立唯一值。 這些值會串連成字串。
設定變數
您可定義包含設定環境相關值的變數。 您可將變數定義為具有值的物件。 下列範例顯示的物件包含兩個環境的值:測試和生產環境。請在部署期間傳入上述其中一個值。
@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
下一步
- 若要了解變數的可用屬性,請參閱了解 Bicep 檔案的結構和語法。
- 若要了解如何使用迴圈語法,請參閱 Bicep 中的反覆迴圈。