Puppet模块与自包含设计

Puppet模块与自包含设计,puppet,Puppet,根据最佳实践: Puppet Labs文档将模块描述为自包含的代码和数据包 好的,很清楚 单个模块可以轻松管理单个应用程序 因此,puppetlabs apache只管理apache,puppetlabs mysql只管理mysql 。。。。因此,我的模块my_company-mediawiki只管理mediawiki(我想……使用数据库和虚拟主机……因为模块是自包含的代码和数据包) 当模块服务于单一目的时,模块最为有效,限制依赖关系,并且只关心管理与其命名目的相关的系统状态 但my_compa

根据最佳实践:

Puppet Labs文档将模块描述为自包含的代码和数据包

好的,很清楚

单个模块可以轻松管理单个应用程序

因此,puppetlabs apache只管理apache,puppetlabs mysql只管理mysql

。。。。因此,我的模块my_company-mediawiki只管理mediawiki(我想……使用数据库和虚拟主机……因为模块是自包含的代码和数据包)

当模块服务于单一目的时,模块最为有效,限制依赖关系,并且只关心管理与其命名目的相关的系统状态

但my_company-mediawiki需要依赖于:

  • puppetlabsmysql:创建数据库
  • puppetlabs apache:用于管理虚拟主机
而且。。。通过快速搜索,我了解到许多模块涉及其他模块

但是

它们提供了完整的功能,而不依赖于任何其他模块,并且可以根据需要进行组合以构建不同的应用程序堆栈

好的,一个好的模块是自包含的,没有依赖关系


所以我必须使用模式角色和概要文件来完成这些最佳实践?或者我感到困惑…

Puppet文档将模块描述为独立的,这与其说是确定的,不如说是期望的。不要读太多,也不要读太多别人对它的回响。模块只是Puppet在类和定义类型之上的下一级代码组织,还包含插件和自有数据


许多低级别模块确实没有跨模块依赖关系,但当您开始在该级别和整个节点配置之间形成聚合时,不可避免地会出现这种依赖关系。这本身并没有什么错。Roles&Profiles模式是构建此类聚合的一种很好的方式,但它不是唯一的方式,而且在任何情况下,它都不能避免跨模块依赖关系,因为role和profile类与其他类一样,它们本身应该属于模块。

这里有一个很好的问题。你能把这个编辑成更连贯的吗?当然。喜欢你能给我举一些例子吗?很好地传达了在木偶设计最佳实践中有太多的观点和误解,同时强调最佳最终目标是降低复杂性。