-
项目
-
在迁移到云的过程中,许多团队都采用了敏捷开发方法。 这些团队的工作快速迭代。 他们需要反复将其解决方案部署到云,并需要知道其基础结构处于一种可靠的状态。 随着基础结构成为迭代过程的一部分,运营与开发之间的划分已经消失。 团队需要通过统一的过程来管理基础结构和应用程序代码。
为了解决这些难题,可将部署自动化,并运用基础结构即代码。 在代码中定义需要部署的基础结构。 基础结构代码将成为项目的一部分。 与应用程序代码一样,可将基础结构代码存储在源存储库中,并控制其版本。 团队中的任何人都可以运行该代码并部署类似的环境。
若要针对 Azure 解决方案实现基础结构即代码,请使用 Azure 资源管理器模板(ARM 模板)。 该模板是一个定义项目基础结构和配置的 JavaScript 对象表示法 (JSON) 文件。 该模板使用声明性语法,使你可以指明要部署的内容,而不需要编写一系列编程命令来创建内容。 在该模板中,指定要部署的资源以及这些资源的属性。 你还可以指定将在哪个资源组中部署这些资源。
我们引入了一种名为
Bicep
的新语言,该语言提供与 ARM 模板相同的功能,但语法更易于使用。 在部署过程中,每个 Bicep 文件都将自动转换为 ARM 模板。 如果正在考虑基础结构即代码选项,建议查看 Bicep。 有关详细信息,请参阅
什么是 Bicep?
。
若要了解如何开始使用 ARM 模板,请参阅以下视频。
为什么选择 ARM 模板?
如果要尝试在使用 ARM 模板和其他基础结构即代码服务之间做出选择,请考虑使用模板的以下优点:
-
声明性语法
:ARM 模板允许以声明方式创建和部署整个 Azure 基础结构。 例如,你不仅可以部署虚拟机,还可以部署网络基础结构、存储系统和可能需要的任何其他资源。
-
可反复效果
:在整个开发生命周期内反复部署基础结构,并确保以一致的方式部署资源。 模板是幂等的,这意味着,可以多次部署同一模板,并获得处于相同状态的相同资源类型。 可以开发一个模板来表示所需的状态,而无需开发大量的独立模板来表示更新。 例如,以下文件创建存储帐户。 如果你部署此模板且具有指定属性的存储帐户已存在,则不会进行更改。
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
"resources": {
"mystore": {
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-04-01",
"name": "mystorageaccount",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
"kind": "StorageV2"
-
业务流程
:无需担心有序操作的复杂性。 资源管理器会协调相互依赖的资源的部署,以按正确的顺序创建这些资源。 在可能的情况下,资源管理器将会并行部署资源,因此,其完成速度比串行部署更快。 通过一个命令部署模板,而无需使用多个强制性命令。
-
模块化文件
:可将模板分解为较小的可重用组件,并在部署时将其链接到一起。 还可以在一个模板中嵌套另一个模板。
-
创建任何 Azure 资源
:可以立即在模板中使用新的 Azure 服务和功能。 一旦资源提供程序引入了新资源,你就可以通过模板立即部署这些资源。 在使用新服务之前,无需等待工具或模块完成更新。
-
扩展性
:使用
部署脚本
时,可以将 PowerShell 或 Bash 脚本添加到模板。 使用部署脚本可扩展在部署过程中设置资源的功能。 脚本可以包含在模板中,也可存储在外部源中并在模板中引用。 使用部署脚本可以在单个 ARM 模板中完成端到端环境设置。
-
测试
:可以使用 ARM 模板工具包 (arm-ttk) 对模板进行测试,确保模板符合建议的准则。 此测试工具包是一个 PowerShell 脚本,可从
GitHub
下载。 使用此工具包,可以更轻松地使用模板语言开发专门技术。
-
预览更改
:可以使用
模拟操作
在部署模板前预览更改。 通过 What-if,你可查看将创建、更新或删除的资源,以及将更改的任何资源属性。 模拟操作会检查环境的当前状态,因此无需管理状态。
-
内置验证
:只有在通过验证后才会部署模板。 资源管理器在开始部署之前会检查模板,以确保部署成功。 部署不太可能会在半完成状态时停止。
-
受跟踪的部署
:在 Azure 门户中,可以查看部署历史记录并获取有关模板部署的信息。 可以查看已部署的模板、已传入的参数值,以及任何输出值。 其他基础结构即代码服务不是通过门户跟踪的。
-
策略即代码
:
Azure Policy
是一个用于自动化监管的策略即代码框架。 如果使用 Azure 策略,在通过模板进行部署时,将会针对不合规的资源执行策略修正。
-
部署蓝图
:你可以利用 Microsoft 提供的
蓝图
来达到监管和合规性标准。 这些蓝图包括各种体系结构的预生成模板。
-
CI/CD 集成
:可以将模板集成到持续集成和持续部署 (CI/CD) 工具中,这些工具可以自动执行发布管道,以实现快速可靠的应用程序和基础结构更新。 通过 Azure DevOps 和资源管理器模板任务,可以使用 Azure Pipelines 持续生成和部署 ARM 模板项目。 若要了解详细信息,请参阅
使用管道的 VS 项目
和
教程:使用 Azure Pipelines 持续集成 Azure 资源管理器模板
。
-
可导出的代码
:可以通过导出资源组的当前状态或查看特定部署所用的模板,来获取现有资源组的模板。 查看
导出的模板
是了解模板语法的有用方法。
-
创作工具
:可以使用
Visual Studio Code
和模板工具扩展来创作模板。 你将获得 Intellisense、语法突出显示、内联帮助以及其他许多语言功能。 除了 Visual Studio Code 以外,还可以使用
Visual Studio
。
在模板中,可以编写
模板表达式
来扩展 JSON 的功能。 这些表达式使用资源管理器提供的
函数
。
模板包含以下节:
-
参数
- 在部署过程中提供值,以便可将同一模板用于不同的环境。
-
变量
- 定义在模板中重复使用的值。 可以从参数值构造变量。
-
用户定义的函数
- 创建自定义函数用于简化模板。
-
资源
- 指定要部署的资源。
-
输出
- 从已部署的资源返回值。
模板部署过程
部署模板时,资源管理器会将模板转换为 REST API 操作。 例如,当资源管理器收到具有以下资源定义的模板:
"resources": [
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "mystorageaccount",
"location": "centralus",
"sku": {
"name": "Standard_LRS"
"kind": "StorageV2"
它会将该定义转换为以下 REST API 操作,然后,该操作将发送到 Microsoft.Storage 资源提供程序:
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/mystorageaccount?api-version=2022-09-01
REQUEST BODY
"location": "centralus",
"sku": {
"name": "Standard_LRS"
"kind": "StorageV2",
"properties": {}
请注意,在资源模板中设置的 apiVersion 将用作 REST 操作的 API 版本。 你可以重复部署模板并可以相信它会继续工作。 通过使用相同的 API 版本,你就无需担心可能在更高版本中引入的中断性变更。
若要部署模板,请使用以下任一选项:
- Azure 门户
- Azure CLI
- PowerShell
- REST API
- GitHub 存储库中的按钮
- Azure Cloud Shell
模板和资源组的定义方式全由你决定,解决方案的管理方式也是如此。 例如,可以通过单个模板在单个资源组中部署三层式应用程序。
但无需在单个模板中定义整个基础结构。 通常,合理的做法是将部署要求划分成一组有针对性的模板。 可以轻松地将这些模板重复用于不同的解决方案。 若要部署特定的解决方案,请创建链接所有所需模板的主模板。 下图显示如何通过包含三个嵌套模板的父模板部署三层式解决方案。
如果希望层具有不同的生命周期,可将这三个层部署到不同的资源组。 请注意,资源仍可链接到其他资源组中的资源。
有关嵌套模板的信息,请参阅将链接模板与 Azure 资源管理器配合使用。
创建模板后,你可能希望与组织中的其他用户共享此模板。 模板规格使你能够将模板存储为资源类型。 可使用基于角色的访问控制来管理对模板规格的访问。具有对模板规格的读取访问权限的用户可以部署它,但无法更改模板。
此方法意味着可以安全地共享符合组织标准的模板。
- 有关引导你完成模板创建过程的分步教程,请参阅教程:创建和部署第一个 ARM 模板。
- 要通过一组引导式 Learn 模块了解 ARM 模板,请参阅使用 ARM 模板在 Azure 中部署和管理资源。
- 有关模板文件中的属性的信息,请参阅了解 ARM 模板的结构和语法。
- 若要了解如何导出模板,请参阅快速入门:使用 Azure 门户创建和部署 ARM 模板。
- 有关常见问题的解答,请参阅有关 ARM 模板的常见问题解答。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:https://aka.ms/ContentUserFeedback。
提交和查看相关反馈