了解如何在 Azure 资源管理器模板(ARM 模板)中进行迭代操作,以创建 Azure 资源的多个实例。 在本教程中,你将修改一个模板,以便创建三个存储帐户实例。
              
               
              
              
            
本教程涵盖以下任务:
- 打开快速入门模板
- 编辑模板
- 部署模板
如果没有 Azure 订阅,请在开始前创建一个试用版订阅。
先决条件
若要完成本文,需要 Visual Studio Code
打开快速入门模板
Azure 快速入门模板是 ARM 模板的存储库。 无需从头开始创建模板,只需找到一个示例模板并对其自定义即可。 本快速入门中使用的模板称为创建标准存储帐户。 该模板定义 Azure 存储帐户资源。
- Visual Studio Code 中,选择文件>打开文件。 
- 在“文件名”中粘贴以下 URL: - https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
- 选择“打开”以打开该文件。 
- 模板中定义了 - Microsoft.Storage/storageAccounts资源。
- 若要保存文件,请选择文件>另存为。 将文件在本地计算机上保存为 azuredeploy.json。 
编辑模板
现有模板创建一个存储帐户。 请通过自定义模板来创建三个存储帐户。
从 Visual Studio Code 中,进行以下四个更改:
              
               
              
              
            
- 向存储帐户资源定义中添加一个 - copy元素。 在- copy元素中,为此循环指定迭代次数和变量。 计数值必须是不超过 800 的正整数。- "copy": { "name": "storageCopy", "count": 3 },
- copyIndex()函数返回循环中的当前迭代。 使用索引作为名称前缀。- copyIndex()将从零开始。 若要偏移索引值,可以在- copyIndex()函数中传递一个值。 例如,- copyIndex(1)。- "name": "[format('{0}storage{1}', copyIndex(), uniqueString(resourceGroup().id))]",
- 删除 - storageAccountName参数定义,因为不再使用它。
- 删除 - outputs元素。 不再需要它。
- 删除 - metadata元素。
已完成的模板如下所示:
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GRS",
        "Standard_GZRS",
        "Standard_LRS",
        "Standard_RAGRS",
        "Standard_RAGZRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for the storage account."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-06-01",
      "name": "[format('{0}storage{1}', copyIndex(), uniqueString(resourceGroup().id))]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "copy": {
        "name": "storageCopy",
        "count": 3
      },
      "properties": {}
    }
  ]
}
保存更改。
有关创建多个实例的详细信息,请参阅 ARM 模板中的资源迭代
部署模板
- 检查你在上一部分保存的文件。 
- 在本地 Shell 中运行以下命令。 选择用于显示 PowerShell 代码或 CLI 代码的选项卡。 - echo "Enter a project name that is used to generate resource group name:" && read projectName && echo "Enter the location (i.e. chinaeast):" && read location && resourceGroupName="${projectName}rg" && az group create --name $resourceGroupName --location "$location" && az deployment group create --resource-group $resourceGroupName --template-file "$HOME/azuredeploy.json"
成功部署模板后,可以显示在指定的资源组中创建的三个存储帐户。 将存储帐户名称与模板中的名称定义进行比较。
echo "Enter a project name that is used to generate resource group name:" &&
read projectName &&
resourceGroupName="${projectName}rg" &&
az storage account list --resource-group $resourceGroupName &&
echo "Press [ENTER] to continue ..."
清理资源
不再需要 Azure 资源时,请通过删除资源组来清理部署的资源。
- 在 Azure 门户上的左侧菜单中选择“资源组” 。
- 在“按名称筛选”字段中输入资源组名称。
- 选择资源组名称。 应会看到,该资源组中总共有三个资源。
- 在顶部菜单中选择“删除资源组”。
后续步骤
在本教程中,你学习了如何创建多个存储帐户实例。 在下一教程中,我们将开发包含多个资源和多个资源类型的模板。 某些资源具有依赖的资源。