我正在评估Puppet作为内部软件configuration和分配系统的潜在替代品。 我正在寻找关于Puppet是否可以满足执行特定于节点的任意软件configuration更改的某些要求的build议。
我们目前的系统提供了一个跟踪单个服务器的CMDB,它们的基本信息(操作系统,IP地址,硬件平台等)以及所有安装的软件组件。 这包括从内部开发的软件应用到操作系统补丁,实用程序等。当前系统还提供基于sftp / ssh的软件分发/安装function,并在端点上运行脚本来执行安装程序。
一个关键的要求(我们目前的系统提供)是为任何给定的组件定义任意软件configuration值的能力。 每个跟踪组件都有一些预定义的configuration参数,其中一些对所有服务器都是通用的,其中一些可能会被特定服务器覆盖,而其中一些服务器必须被覆盖。 在我们当前的系统中,我们在将软件分发包推送到端点之前configuration这些参数。 这些分发程序包中有脚本,它们使用configuration参数来生成作为分发和安装的一部分而推出的configuration文件。
在过去的几天里,我已经阅读了很多关于Puppet的文档,但是Puppet能否提供这个关键function对我来说还是不是很明显。 我可以确定的最好的是,它肯定会要求编写自定义事实作为configuration参数,但除此之外,我还没有能够确定是否可以configuration这些事实的具体值,并导致这些值configuration在端点。
只要查看PE控制台中节点的“Inventory”部分,这与我正在查找的节点类似,但是我需要能够按层次组织它(相关configuration参数或“事实”按类别/组件/等等分组)。 ,以及为这些自定义事实指定默认值和/或重写值的能力。
在这一点上,我不确定Puppet是否可以提供这种function,或者如果可以的话,我会去设置它。 我已经看到Hiera的参考资料,但关于它的详细信息或示例用例,所以我不知道这是否对我的情况有任何用处。
FWIW,这种解决scheme最初只能用于pipe理Windows服务器,但最终还会扩展到Linux机箱。
感谢您提供的任何build议。
是的,一点没错。 这不一定需要以任何方式涉及自定义事实或事实清单,尽pipe它可以如果你想要的。
如果你有兴趣在节点声明中设置exception(集中在主节点上),那么看看参数化的类 。 这将允许您在将类包含到节点中时定义该类的设置。
或者,如果您在节点上设置自定义事实,则只需在类定义中使用这些事实即可进行所需的任何更改。
让我知道,如果这是有道理的,或者如果你需要更具体的例子 – 自定义可用的地方可能会不同于你当前的自定义工作stream程,所以确保它会以你需要的方式工作,然后再潜入实现。