接下来准备开一波Azure Blueprint相关的blog,来一起学习下这个Azure进阶过程中不可获取的服务,常用的Azure功能我们已经介绍过很多了,之前有几十篇博客都写到了Azure里常用的功能,也分享了很多很多常用的脚本,但是之前很少分享过像是ARM Template这类的代码,因为感觉来说ARM Template使用上还是稍微费事了些,JSON编辑起来也比较麻烦,所以平时会更倾向于用Terraform这类的工具,但是作为Azure原生的infrastructure as code工具,微软又进一步拓展了它的功能,现在我们可以用Blueprint作为一个完整的IAS的平台了,在这里也集成了ARM Template的功能

这次准备介绍的Blueprint发布的时间还不是很长,个人感觉定位上像是对于ARM Template的补充,进一步完善了Azure上实现IAS的方式,首先来看下Blueprint的一些介绍

通过 Azure 蓝图,云架构师和中心信息技术组同样可以定义一组可重复的 Azure 资源,这些资源实现并遵守组织的标准、模式和要求。 通过 Azure 蓝图,开发团队可以快速生成和构建新环境,并确信这些生成的环境符合组织规定,还可以使用一组有助于加快开发和交付过程的内置组件(如网络)。

如官网的这段话所说,blueprint可以用来定义一组可重复的Azure资源,并且可以很直观的看到这些资源遵守的policy,确保这些资源的部署是合规的

https://docs.microsoft.com/zh-cn/azure/governance/blueprints/overview?WT.mc_id=AZ-MVP-5001235

Blueprint中可以定义的资源主要包括以下几种:

  1. 角色分配

  2. 策略分配

  3. Azure 资源管理器模板(ARM 模板)

  4. 资源组

以下是Azure Blueprint与其他Azure服务的区别,直白点说,Blueprint其实是包括ARM Template和Policy的功能的,Blueprint相当于是对Azure资源、RBAC、Policy的整合,在Blueprint中可以直观的看到对这些服务的定义

与 ARM 模板的不同之处

此服务旨在帮助进行环境设置。 此设置通常包括一组资源组、策略、角色分配和 ARM 模板部署。 蓝图是将每个项目类型组合在一起的包,通过蓝图可编写和版本化该包(包括通过持续集成和持续交付 [CI/CD] 管道)。 最终可在一个可审计和跟踪的操作中将每个蓝图分配给订阅。

几乎所有要包含在 Azure 蓝图中部署的内容都可以使用 ARM 模板完成。 但是,ARM 模板是 Azure 中不以本机方式存在的文档 - 每个模板均存储在本地或源代码管理中。 该模板用于部署一个或多个 Azure 资源,但部署了这些资源后,资源与模板之间就不再存在有效的连接或关系。

使用 Azure 蓝图,蓝图定义(应该部署的对象)和蓝图分配(已部署的对象)之间的关系仍然存在 。 此连接支持改进部署的跟踪和审核。 Azure 蓝图也能一次性升级由同一蓝图管理的多个订阅。

无需在 ARM 模板和蓝图之间进行选择。 每个蓝图都可以包含零个或多个 ARM 模板项目。 此支持意味着可以在 Azure 蓝图中重复使用以前开发和维护 ARM 模板库的工作成果。


与 Azure Policy 的不同之处

蓝图是一个包或容器,用于组合与 Azure 云服务、安全性和设计的实现相关的一组针对目标的标准、模式和要求,这些标准、模式和要求可以重复使用以确保一致性和符合性。

策略是默认允许和显式拒绝系统,侧重于部署期间的资源属性,用于现有资源。 它会验证订阅中的资源是否符合要求和标准,以此为云治理提供支持。

如果在蓝图中包含策略,则可以在分配蓝图期间创建适当的模式或设计。 包含策略可确保只对环境进行批准或预期的更改,以确保持续符合蓝图意向。

策略可作为众多项目中的一项包含在蓝图定义中。 蓝图还支持在策略和计划中使用参数。


总的来说,Blueprint是一组Azure中集成资源定义、权限定义、策略定义的集合,具有可重复部署、可审核、可集成CI/CD pipline等多种属性