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

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

本教程介绍如何创建存储帐户、虚拟机、虚拟网络以及一些其他的依赖资源。 某些资源的部署依赖于另一资源的存在。 例如,创建虚拟机的前提是其存储帐户和网络接口存在。 可通过使一个资源依赖于其他资源来定义此关系。 资源管理器会评估资源之间的依赖关系,并按其依赖顺序部署资源。 如果资源互不依赖,资源管理器将以并行方式部署资源。 有关详细信息,请参阅在 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. 在顶部菜单中选择“删除资源组”。

后续步骤

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