1.3.2.1. 模式模块(Pattern Module)
模式模块用于部署多个 Azure 资源,可以使用资源模块构建,也可以直接使用对应的 resource
块构建。它们定义的资源可多可少,但旨在加速常见任务、部署或架构的实现。模式模块允许引用不同产品线的产品,只要它们的组合可以提供清晰的价值即可。
1.3.2.1.1. 适用场景
适用于希望使用 WAF 最佳实践轻松部署架构(如生产环境中的 Azure Kubernetes 服务集群)的用户。一般来说,模式模块的可配置性可以不像资源模块那么高,但用户应能够非常清晰地理解模式模块部署的基础设施具有什么样的特点。例如,CloudPosse 维护的一个模块terraform-aws-multi-az-subnets
,该模块从名字上就可以推测出,它部署的子网必然是跨多可用区的。它的可配置性可能并不如其他模块那么高,但如果用户只是想简单部署一组跨多可用区能实现高可用的子网,那么该模块可能更加合适。
再比如说 avm-ptn-aks-production
这个模块,Azure Kubernetes Service 作为一个极其复杂的产品,azurerm_kubernetes_cluster
资源块拥有非常复杂的资源结构,其可配置性非常高,用户想通过模块部署一个高可用的 AKS 集群时可能会觉得手足无措;avm-ptn-aks-production
模块就以牺牲部分可配置性为代价,为用户提供了部署起来相当简单,但配置完全足以应对一般的生产环境需求的配置。
另外,有的模式模块的作用是将多个资源模块组合成一个更大尺度的组件,例如 avm-ptn-alz-connectivity-hub-and-spoke-vnet
,它实现了 Azure 上的 Hub-Spoke 网络架构,将一组分布于不同区域的虚拟网络整合成一个互相连通的跨区域网络,因为我们已经有了虚拟网络的资源模块,将多个这样的虚拟网络组合成更大规模的跨区域网络就属于一个模式模块。
读者可以把模式模块理解成专为某一特定使用场景准备的模块。