使用 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 大小写形式指定。 它们最适用于需要多次指定的值,尤其是当该值是复杂表达式时。
请勿在模板的 variables 节中使用 reference
函数。 函数 reference
在运行时解析,并在分析模板时解析变量。 此外,不要对 apiVersion
资源使用变量。 API 版本确定资源的架构,通常不能在不更改资源属性的情况下更改版本。