本教程介绍如何将 模板函数 添加到 Azure 资源管理器模板(ARM 模板)。 使用函数动态构造值。 除了这些系统提供的模板函数,还可以创建 用户定义的函数。 本教程需要 7 分钟 才能完成。
先决条件
建议完成 有关参数的教程,但这不是必需的。
需要具有 Visual Studio Code,以及 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')]"
后,使用了 参数 函数。 括号指示括号内的语法是 模板表达式。 资源管理器解析语法,而不是将其视为文本值。
函数通过在部署期间动态获取值,为模板增添灵活性。 在本教程中,将使用函数获取资源组部署位置。
以下示例突出显示了添加名为 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 门户中,从左侧菜单中选择 资源组 。
- 在Filter for any field...文本字段中键入资源组名称。
- 选中 myResourceGroup 旁边的框,然后选择 myResourceGroup 或资源组名称。
- 在顶部菜单中选择“删除资源组”。
后续步骤
在本教程中,将使用函数来定义参数的默认值。 在本教程系列中,将继续使用函数。 在系列结束时,将函数添加到每个模板部分。