教程:创建包含所依赖资源的 ARM 模板
了解如何创建 Azure 资源管理器模板(ARM 模板)以部署多个资源和配置部署顺序。 创建模板后,使用 Azure 本地 Shell 从本地计算机部署模板。
本教程介绍如何创建存储帐户、虚拟机、虚拟网络以及一些其他的依赖资源。 某些资源的部署依赖于另一资源的存在。 例如,创建虚拟机的前提是其存储帐户和网络接口存在。 可通过将一个资源标记为依赖于其他资源来定义此关系。 Resource Manager 将评估资源之间的依赖关系,并根据其依赖顺序进行部署。 如果资源互不依赖,资源管理器将以并行方式部署资源。 有关详细信息,请参阅在 ARM 模板中定义部署资源的顺序。
本教程涵盖以下任务:
- 打开快速入门模板
- 浏览模板
- 部署模板
如果没有 Azure 订阅,请在开始前创建一个试用版订阅。
先决条件
若要完成本文,需要做好以下准备:
包含资源管理器工具扩展的 Visual Studio Code。 请参阅快速入门:使用 Visual Studio Code 创建 ARM 模板。
若要提高安全性,请使用为虚拟机管理员帐户生成的密码。 可以在 PowerShell 或 CLI 中使用 Azure 本地 Shell 运行以下命令:
openssl rand -base64 32
若要了解详细信息,请运行
man openssl rand
打开手册页。Azure Key Vault 旨在保护加密密钥和其他机密。 有关详细信息,请参阅教程:在 ARM 模板部署中集成 Azure Key Vault。 我们还建议你每三个月更新一次密码。
打开快速入门模板
Azure 快速入门模板是 ARM 模板的存储库。 无需从头开始创建模板,只需找到一个示例模板并对其自定义即可。 本教程中使用的模板称为部署简单的 Windows VM。
在 Visual Studio Code 中,选择“文件”>“打开文件”。
在“文件名”中粘贴以下 URL:
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
选择“打开”以打开该文件。
选择“文件”>“另存为”,将该文件的副本保存到名为 azuredeploy.json 的本地计算机。
浏览模板
浏览此部分的模板时,请尝试回答以下问题:
- 在此模板中定义了多少 Azure 资源?
- 其中一个资源是 Azure 存储帐户。 该定义是否与上一教程中使用的定义类似?
- 对于此模板中定义的资源,能否找到模板参考?
- 能否找到资源的依赖项?
在 Visual Studio Code 中折叠元素,直到只能在
resources
中看到第一级元素和第二级元素:有六个通过此模板定义的资源:
Microsoft.Storage/storageAccounts
。Microsoft.Network/publicIPAddresses
。Microsoft.Network/networkSecurityGroups
。Microsoft.Network/virtualNetworks
。Microsoft.Network/networkInterfaces
。Microsoft.Compute/virtualMachines
。
在自定义模板之前查看模板参考会很有帮助。
展开第一个资源。 它是一个存储帐户。
展开第二个资源。 资源类型为
Microsoft.Network/publicIPAddresses
。展开第三个资源。 资源类型为
Microsoft.Network/networkSecurityGroups
。展开第四个资源。 资源类型为
Microsoft.Network/virtualNetworks
:使用
dependsOn
元素可将一个资源定义为与一个或多个资源相依赖。 此资源依赖于另一个资源:Microsoft.Network/networkSecurityGroups
展开第五个资源。 资源类型为
Microsoft.Network/networkInterfaces
。 此资源依赖于两个其他的资源:Microsoft.Network/publicIPAddresses
Microsoft.Network/virtualNetworks
展开第六个资源。 此资源为虚拟机。 它依赖于两个其他的资源:
Microsoft.Storage/storageAccounts
Microsoft.Network/networkInterfaces
下图演示了此模板的资源和依赖项信息:
指定依赖项可以让资源管理器有效地部署此解决方案。 它以并行方式部署存储帐户、公共 IP 地址和虚拟网络,因为这些没有依赖项。 部署公共 IP 地址和虚拟网络资源以后,会创建网络接口。 所有其他的资源都部署以后,资源管理器会部署虚拟机。
部署模板
检查并验证先前在教程中保存的模板。 文件名为 azuredeploy.json。
运行以下 PowerShell 脚本以部署该模板。
echo "Enter a project name that is used to generate resource group name:" && read projectName && echo "Enter the location (i.e. chinaeast):" && 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
通过 RDP 连接到虚拟机,验证虚拟机是否已成功创建。
清理资源
不再需要 Azure 资源时,请通过删除资源组来清理部署的资源。
- 在 Azure 门户上的左侧菜单中选择“资源组” 。
- 在“按名称筛选”字段中输入资源组名称。
- 选择资源组名称。 应会看到,该资源组中总共有六个资源。
- 在顶部菜单中选择“删除资源组”。
后续步骤
本教程介绍如何通过开发和部署模板来创建虚拟机、虚拟网络和依赖资源。 若要了解如何使用部署脚本来执行部署前/后操作,请参阅: