你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:创建包含所依赖资源的 ARM 模板

了解如何创建 Azure 资源管理器模板(ARM 模板)以部署多个资源和配置部署顺序。 创建模板后,从 Azure 门户使用 Azure Cloud Shell 部署该模板。

本教程介绍如何创建存储帐户、虚拟机、虚拟网络以及一些其他的依赖资源。 某些资源的部署依赖于另一资源的存在。 例如,创建虚拟机的前提是其存储帐户和网络接口存在。 可通过将一个资源标记为依赖于其他资源来定义此关系。 Resource Manager 将评估资源之间的依赖关系,并根据其依赖顺序进行部署。 如果资源互不依赖,资源管理器将以并行方式部署资源。 有关详细信息,请参阅在 ARM 模板中定义部署资源的顺序

示意图显示资源管理器模板中依赖资源的部署顺序。

本教程涵盖以下任务:

  • 打开快速入门模板
  • 浏览模板
  • 部署模板

如果还没有 Azure 订阅,可以在开始前创建一个免费帐户

有关介绍资源依赖项的 Learn 模块,请参阅使用高级 ARM 模板功能管理复杂云部署

先决条件

若要完成本文,需要做好以下准备:

打开快速入门模板

Azure 快速入门模板是 ARM 模板的存储库。 无需从头开始创建模板,只需找到一个示例模板并对其自定义即可。 本教程中使用的模板称为部署简单的 Windows VM

  1. 在 Visual Studio Code 中,选择“文件”>“打开文件”。

  2. 在“文件名”中粘贴以下 URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. 选择“打开”以打开该文件。

  4. 选择“文件”>“另存为”,将该文件的副本保存到名为 azuredeploy.json 的本地计算机。

浏览模板

浏览此部分的模板时,请尝试回答以下问题:

  • 在此模板中定义了多少 Azure 资源?
  • 其中一个资源是 Azure 存储帐户。 该定义是否与上一教程中使用的定义类似?
  • 对于此模板中定义的资源,能否找到模板参考?
  • 能否找到资源的依赖项?
  1. 在 Visual Studio Code 中折叠元素,直到只能在 resources 中看到第一级元素和第二级元素:

    Visual Studio Code 的屏幕截图,显示了具有折叠元素的 ARM 模板。

    有六个通过此模板定义的资源:

  2. 展开第一个资源。 它是一个存储帐户。 将资源定义和模板参考进行比较。

    Visual Studio Code 的屏幕截图,显示了 ARM 模板中的存储帐户定义。

  3. 展开第二个资源。 资源类型为 Microsoft.Network/publicIPAddresses。 将资源定义和模板参考进行比较。

    Visual Studio Code 的屏幕截图,显示了 ARM 模板中的公共 IP 地址定义。

  4. 展开第三个资源。 资源类型为 Microsoft.Network/networkSecurityGroups。 将资源定义和模板参考进行比较。

    Visual Studio Code 的屏幕截图,显示了 ARM 模板中的网络安全组定义。

  5. 展开第四个资源。 资源类型为 Microsoft.Network/virtualNetworks

    Visual Studio Code 的屏幕截图,显示了 ARM 模板中带有 dependsOn 元素的虚拟网络定义。

    使用 dependsOn 元素可将一个资源定义为与一个或多个资源相依赖。 此资源依赖于另一个资源:

    • Microsoft.Network/networkSecurityGroups
  6. 展开第五个资源。 资源类型为 Microsoft.Network/networkInterfaces。 此资源依赖于两个其他的资源:

    • Microsoft.Network/publicIPAddresses
    • Microsoft.Network/virtualNetworks
  7. 展开第六个资源。 此资源为虚拟机。 它依赖于两个其他的资源:

    • Microsoft.Storage/storageAccounts
    • Microsoft.Network/networkInterfaces

下图演示了此模板的资源和依赖项信息:

示意图显示 Visual Studio Code 中显示的 ARM 模板中的资源之间的依赖关系。

指定依赖项可以让资源管理器有效地部署此解决方案。 它以并行方式部署存储帐户、公共 IP 地址和虚拟网络,因为这些没有依赖项。 部署公共 IP 地址和虚拟网络资源以后,会创建网络接口。 所有其他的资源都部署以后,资源管理器会部署虚拟机。

部署模板

  1. 登录到 Cloud Shell

  2. 通过在左上角选择“PowerShell”或“Bash”(适用于 CLI)来选择你喜欢使用的环境 。 进行切换时,需重启 shell。

    Azure 门户 Cloud Shell 的屏幕截图,其中突出显示了“上传文件”选项。

  3. 依次选择“上传/下载文件”、“上传”。 请参阅上面的屏幕截图。 选择先前保存的文件。 上传文件后,可以使用 ls 命令和 cat 命令验证是否已成功上传文件。

  4. 运行以下 PowerShell 脚本以部署该模板。

    echo "Enter a project name that is used to generate resource group name:" &&
    read projectName &&
    echo "Enter the location (i.e. centralus):" &&
    read location &&
    echo "Enter the virtual machine admin username:" &&
    read adminUsername &&
    echo "Enter the DNS label prefix:" &&
    read dnsLabelPrefix &&
    resourceGroupName="${projectName}rg" &&
    az group create --name $resourceGroupName --location $location &&
    az deployment group create --resource-group $resourceGroupName --template-file "$HOME/azuredeploy.json" --parameters adminUsername=$adminUsername dnsLabelPrefix=$dnsLabelPrefix
    
  5. 通过 RDP 连接到虚拟机,验证虚拟机是否已成功创建。

清理资源

不再需要 Azure 资源时,请通过删除资源组来清理部署的资源。

  1. 在 Azure 门户上的左侧菜单中选择“资源组” 。
  2. 在“按名称筛选”字段中输入资源组名称。
  3. 选择资源组名称。 应会看到,该资源组中总共有六个资源。
  4. 在顶部菜单中选择“删除资源组”。

后续步骤

本教程介绍如何通过开发和部署模板来创建虚拟机、虚拟网络和依赖资源。 若要了解如何使用部署脚本来执行部署前/后操作,请参阅: