教程:将模板函数添加到 ARM 模板
本教程介绍如何向 Azure 资源管理器模板(ARM 模板)添加模板函数。 我们使用函数来动态构造值。 除了这些系统提供的模板函数,还可以创建用户定义的函数。 完成本教程需要 7 分钟。
先决条件
建议完成有关参数的教程,但这不是必需的。
需要安装 Visual Studio Code 并与 Azure 资源管理器工具扩展以及 Azure PowerShell 或 Azure CLI 一起使用。 有关详细信息,请参阅模板工具。
审阅模板
在上一教程结束时,模板包含以下 JSON 文件:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"storageSKU": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS",
"Premium_LRS"
]
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[parameters('storageName')]",
"location": "chinaeast",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
}
假设将 Azure 存储帐户的位置硬编码为“chinanorth”,但需要将其部署到另一个区域。 需要添加参数,以便增加模板的灵活性,并允许它具有不同的位置。
使用函数
如果已完成参数教程,则使用了函数。 在添加 "[parameters('storageName')]"
时,你使用了 parameters 函数。 括号表示其中的语法是一个模板表达式。 资源管理器会对语法进行解析,而不是将其视为文本值。
函数可以在部署过程中动态获取值,为模板增加了灵活性。 本教程中使用函数来获取资源组的部署位置。
以下示例重点介绍添加名为 location
的参数需要做的更改。 参数默认值调用 resourceGroup 函数。 此函数返回的对象描述了部署的资源组。 其中一个对象属性是位置属性。 使用默认值时,存储帐户位置与资源组位置相同。 组中的资源位置不同。
复制整个文件,将模板替换为该文件的内容。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"storageSKU": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS",
"Premium_LRS"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[parameters('storageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
}
部署模板
在前面的教程中,你创建的存储帐户位于“中国东部”,但资源组创建于“中国北部”。 在本教程中,存储帐户与资源组在同一区域创建。 请使用位置的默认值,这样就不需提供该参数值。 需要为存储帐户提供新名称,因为是在另一位置创建存储帐户。 例如,使用“store2”而不是“store1”作为前缀。
如果尚未创建资源组,请参阅创建资源组。 此示例假设已根据第一篇教程中所述,将 templateFile
变量设置为模板文件的路径。
New-AzResourceGroupDeployment `
-Name addlocationparameter `
-ResourceGroupName myResourceGroup `
-TemplateFile $templateFile `
-storageName "{new-unique-name}"
注意
如果部署失败,请使用 verbose
开关获取有关正在创建的资源的信息。 使用 debug
开关获取调试的详细信息。
验证部署
可以通过在 Azure 门户中浏览资源组来验证部署。
- 登录 Azure 门户。
- 在左侧菜单中选择“资源组”。
- 选中“myResourceGroup”左侧的框,然后选择“myResourceGroup”。
- 选择创建的资源组。 默认名称为 myResourceGroup。
- 请注意,已部署的存储帐户和资源组在同一位置。
清理资源
若要继续学习下一篇教程,则不需删除该资源组。
如果就此停止学习,请删除该资源组。
- 在 Azure 门户上的左侧菜单中选择“资源组” 。
- 在“筛选任何字段…”文本字段中键入资源组名称。
- 选中“myResourceGroup”旁边的框,然后选择“myResourceGroup”或资源组名称。
- 在顶部菜单中选择“删除资源组”。
后续步骤
本教程使用函数来定义参数的默认值。 本教程系列将继续使用函数。 到本系列完成时,我们会将函数添加到每个模板部分。