添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

本文介绍如何在 Bicep 文件中定义和使用变量。 变量用于简化 Bicep 文件开发。 请定义包含复杂表达式的变量,而不必在整个 Bicep 文件中重复使用复杂的表达式。 然后,在整个 Bicep 文件中根据需要使用该变量。

资源管理器会在启动部署操作之前解析变量。 在 Bicep 文件中所有使用该变量的位置,资源管理器都会将其替换为解析的值。

一个 Bicep 文件中最多可以有 256 个变量。 有关详细信息,请参阅 模板限制

用于定义变量的语法如下所示:

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 中的迭代循环

以下示例演示如何使用资源属性的变量。 通过提供变量的名称 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

由于存储帐户名称必须使用小写字母,因此 storageName 变量使用 toLower 函数来使 storageNamePrefix 值成为小写。 uniqueString 函数从资源组 ID 创建唯一值。 这些值会连接到某个字符串。

可以定义变量来保存配置环境所需的相关值。 可以将变量定义为一个包含值的对象。 以下示例演示的对象包含的值适用于两个环境 - testprod。在部署过程中传入这些值之一。

@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 中的迭代循环
  •