快速入门:创建和部署模板规格

本快速入门介绍如何将 Azure 资源管理器模板(ARM 模板)打包为模板规格。然后部署该模板规格。模板规格包含用于部署存储帐户的 ARM 模板。

提示

建议使用 Bicep,因为它提供与 ARM 模板相同的功能,并且该语法更易于使用。 有关详细信息,请参阅快速入门:使用 Bicep 创建和部署模板规范

先决条件

具有活动订阅的 Azure 帐户。 创建帐户

注意

若要将模板规格与 Azure PowerShell 一起使用,必须安装版本 5.0.0 或更高版本。 若要将其与 Azure CLI 一起使用,请使用版本 2.14.2 或更高版本

创建模板

可以根据本地模板创建模板规格。 复制以下模板并将其本地保存到名为 azuredeploy.json 的文件中。 本快速入门假设你已将模板保存到路径 c:\Templates\azuredeploy.json,不过你可以使用任何路径。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.13.1.58284",
      "templateHash": "13120038605368246703"
    }
  },
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Premium_LRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The storage account location."
      }
    },
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "The name of the storage account"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[parameters('storageAccountName')]"
    },
    "storageAccountId": {
      "type": "string",
      "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
    }
  }
}

创建模板规格

模板规格是名为 Microsoft.Resources/templateSpecs 的资源类型。 若要创建模板规格,可以使用 PowerShell、Azure CLI、门户或 ARM 模板。

  1. 创建新的资源组以包含模板规格。

    New-AzResourceGroup `
      -Name templateSpecRG `
      -Location chinanorth2
    
  2. 在该资源组中创建模板规格。 将新的模板规格命名为 storageSpec。

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "1.0" `
      -ResourceGroupName templateSpecRG `
      -Location chinanorth2 `
      -TemplateFile "c:\Templates\azuredeploy.json"
    

部署模板规格

若要部署模板规格,请使用部署模板所用的部署命令。 传入模板规格的资源 ID 以进行部署。

  1. 创建资源组以包含新的存储帐户。

    New-AzResourceGroup `
      -Name storageRG `
      -Location chinanorth2
    
  2. 获取模板规格的资源 ID。

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
    
  3. 部署模板规格。

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG
    
  4. 提供的参数与 ARM 模板的完全一样。 使用存储帐户类型的参数重新部署模板规格。

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -storageAccountType Standard_GRS
    

授予访问权限

如果要让组织中的其他用户部署模板规格,你需要向他们授予读取权限。 对于包含要共享的模板规格的资源组,你可以将读取者角色分配给 Microsoft Entra 组。 有关详细信息,请参阅教程:使用 Azure PowerShell 授予组对 Azure 资源的访问权限

更新模板

假设你已在模板规格中标识了要对模板进行的更改。以下模板类似于之前的模板,不同之处在于其存储帐户名称增加了前缀。 复制以下模板并更新 azuredeploy.json 文件。

{
  "$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": [
        "Standard_LRS",
        "Standard_GRS",
        "Premium_LRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "namePrefix": {
      "type": "string",
      "maxLength": 11,
      "defaultValue": "store",
      "metadata": {
        "description": "Prefix for storage account name"
      }
    }
  },
  "variables": {
    "storageAccountName": "[concat(parameters('namePrefix'), uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    }
  }
}

更新模板规格版本

在现有模板规格中添加名为 2.0 的新版本,而不是为修改后的模板创建新的模板规格。用户可以选择任一版本进行部署。

  1. 创建新的模板规格版本。

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location chinanorth2 `
      -TemplateFile "c:\Templates\azuredeploy.json"
    
  2. 若要部署新版本,请获取 2.0 版本的资源 ID。

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
    
  3. 部署该版本。 为存储帐户名称提供一个前缀。

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -namePrefix "demoaccount"
    

清理资源

若要清理本快速入门中部署的资源,请删除创建的两个资源组。

  1. 在 Azure 门户上的左侧菜单中选择“资源组”。

  2. 在“按名称筛选”字段中输入资源组名称(templateSpecRG 和 storageRG)。

  3. 选择资源组名称。

  4. 在顶部菜单中选择“删除资源组”。

后续步骤

若要了解有关创建包含关联模板的模板规格的信息,请参阅创建关联模板的模板规格