描述 Azure 资源管理器和 Azure ARM 模板
Azure 资源管理器 (ARM) 是适用于 Azure 的部署和管理服务。 它提供了一个管理层,用于在 Azure 帐户中创建、更新和删除资源。 每当对 Azure 资源执行任何操作时,都会涉及到 ARM。
当用户从任意 Azure 工具、API 或 SDK 发送请求时,ARM 将会收到该请求。 ARM 会对该请求进行身份验证和授权。 然后,ARM 将该请求发送到 Azure 服务,后者将执行请求的操作。 由于所有请求是通过同一个 API 处理的,因此在所有不同的工具中会看到一致的结果和功能。
Azure 资源管理器的好处
借助 Azure 资源管理器,你可以:
- 通过声明性模板而非脚本来管理基础结构。 资源管理器模板是一个 JSON 文件,用于定义要部署到 Azure 的内容。
- 以组的形式部署、管理和监视解决方案的所有资源,而不是单独处理这些资源。
- 可以在整个开发生命周期内重复部署解决方案,并确保以一致的状态部署资源。
- 定义各资源之间的依赖关系,使其按正确的顺序进行部署。
- 将访问控制应用到所有服务,因为 RBAC 已原生集成到管理平台。
- 将标记应用到资源,以逻辑方式组织订阅中的所有资源。
- 通过查看使用同一标记的一组资源的成本来了解组织的帐单。
以下视频概述了 Azure 资源管理器。
基础结构即代码
基础结构即代码是一种概念,即将基础结构作为代码行进行管理。 在入门级,它使用 Azure Cloud Shell、Azure PowerShell 或 Azure CLI 来管理和配置资源。 对云更熟悉后,可以使用基础结构作为代码概念,使用可重复的模板和配置来管理整个部署。 ARM 模板和 Bicep 是将基础结构即代码以及 Azure 资源管理器搭配使用来维护环境的两个示例。
ARM 模板
使用 ARM 模板,可以使用声明性 JSON 格式描述要使用的资源。 使用 ARM 模板,可以在运行任何代码之前验证部署代码。 这可确保正确创建和连接资源。 模板随后会协调这些资源的并行创建。 也就是说,如果需要同一个资源的 50 个实例,则会同时创建所有 50 个实例。
最终,开发人员、DevOps 专业人员或 IT 专业人员只需在 ARM 模板中定义每个资源的所需状态和配置,然后模板会完成其余工作。 模板甚至可以在设置资源之前或之后执行 PowerShell 和 Bash 脚本。
使用 ARM 模板的益处
在规划 Azure 资源的部署时,ARM 模板提供了许多好处。 其中一些好处包括:
- 声明性语法:ARM 模板允许以声明方式创建和部署整个 Azure 基础结构。 声明式语法用于声明要部署的内容,但不需要编写实际的编程命令和序列来部署资源。
- 可反复效果:在整个开发生命周期内反复部署基础结构,并确保以一致的方式部署资源。 可以使用相同的 ARM 模板部署多个开发/测试环境,因为所有环境都是相同的。
- 业务流程:无需担心有序操作的复杂性。 Azure 资源管理器会协调相互依赖的资源的部署,以便按正确的顺序创建资源。 在可能的情况下,Azure 资源管理器将会并行部署资源,因此,其完成速度比串行部署更快。 通过一个命令部署模板,而无需使用多个强制性命令。
- 模块化文件:可将模板分解为较小的可重用组件,并在部署时将其链接到一起。 还可以在一个模板中嵌套另一个模板。 例如,可以为 VM 堆栈创建模板,然后将该模板嵌套在部署整个环境的模板中,并且该 VM 堆栈将始终部署在每个环境模板中。
- 扩展性:使用部署脚本时,可以将 PowerShell 或 Bash 脚本添加到模板。 使用部署脚本可扩展在部署过程中设置资源的功能。 脚本可以包含在模板中,也可存储在外部源中并在模板中引用。 使用部署脚本可以在单个 ARM 模板中完成端到端环境设置。
Bicep
Bicep 是使用声明性语法来部署 Azure 资源的语言。 Bicep 文件定义了基础结构和配置。 然后,ARM 根据 Bicep 文件部署该环境。 虽然类似于用 JSON 编写的 ARM 模板,但 Bicep 文件倾向于使用更简单、更简洁的风格。
Bicep 的一些优点是:
- 支持所有资源类型和 API 版本:Bicep 直接支持 Azure 服务的所有预览版本和正式发布版本。 在资源提供程序引入新的资源类型和 API 版本后,即可在 Bicep 文件中使用它们。 无需等待工具完成更新即可使用新服务。
- 简单的语法:与等效的 JSON 模板相比,Bicep 文件更简洁且更易于阅读。 Bicep 不要求事先了解编程语言。 Bicep 语法是声明性的,可指定要部署的资源和资源属性。
- 可反复效果:在整个开发生命周期内反复部署基础结构,并确保以一致的方式部署资源。 Bicep 文件是幂等的,这意味着,可以多次部署同一文件,并获得处于相同状态的相同资源类型。 可以开发一个文件来表示所需的状态,而无需开发大量的独立文件来表示更新。
- 业务流程:无需担心有序操作的复杂性。 资源管理器会协调相互依赖的资源的部署,以按正确的顺序创建这些资源。 在可能的情况下,资源管理器将会并行部署资源,因此,其完成速度比串行部署更快。 通过一个命令部署文件,而无需使用多个强制性命令。
- 模块化:可以使用模块将 Bicep 代码分解为可管理的部分。 该模块会部署一组相关资源。 通过模块,你可以重用代码和简化开发。 需要部署这些资源时,可以随时将模块添加到 Bicep 文件。