使用 Azure 资源管理器模板变量重复使用表达式

已完成

在前面的方案中,你决定使用由多个 Azure 资源管理器 (ARM) 模板函数组成的表达式来为 Azure 存储帐户创建唯一名称。 这种灵活性可确保所有客户都能使用此 ARM 模板进行部署。 不过你会注意到,将此表达式添加到多个位置时,维护此模板会变得困难。 你决定对存储帐户名称表达式使用变量,以便可在一个位置定义表达式,并在整个模板中重复使用。

什么是 ARM 模板变量?

ARM 模板变量是一个用于保存值供以后使用的构造。 如果需要在模板中的多个位置指定值,最好使用变量。 无论在模板中的哪个位置使用变量,资源管理器都会将其替换为已解析的值。

例如,你有一个定义资源位置值的表达式。 需要为模板中定义的多个资源提供一个位置。 你可以创建一个变量来保存位置表达式,然后在需要位置的地方使用该变量。

使用 ARM 模板变量的优点

使用 ARM 模板变量,可以只编写一次表达式,便可在多个位置使用它。 此外,表达式的维护集中一个位置执行,并且模板更易于阅读。

如何使用 ARM 模板变量?

ARM 模板变量在模板的 variables: {} 部分中定义。 例如,下面是你在上个单元中定义的存储帐户名称的表达式。 它现在正在定义 storageName 变量的值。

"variables": {
  "storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},

然后在模板中需要存储帐户名称的位置使用该变量:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageName')]",
    ...
  }
]

ARM 模板变量的建议

模板变量以 camel 大小写形式指定。 最好为需要多次指定的值使用模板变量,特别是当该值为复杂表达式时。

请勿在模板的变量部分使用 reference 函数。 reference 函数在运行时解析,而变量在分析模板时解析。 此外,请不要将变量用于资源的 apiVersion。 API 版本确定资源的架构,并且在不更改资源属性的情况下通常无法更改版本。