使用Puppet部署分布式应用程序 – build议?

我正在考虑迁移我们的部署过程到使用Puppet。 我首先部署了我们用于系统的第三方应用程序,其中包括由Zookeeper合奏组织的Solr Cloud。

使用内置的Zookeeper部署Solr云相当简单,但是如果我想使用独立的Zookeeper合奏,那么我需要在configuration中部署Zookeeper:

server.1=ip1:2888:3888 server.2=ip2:2888:3888 server.3=ip3:2888:3888 

(例如)。 鉴于我不能假定任何有关节点sorting的事情,而且我想保留所有基于Puppet的节点:我应该怎么看待这个问题?

我是否需要使用模板和一些Hiera查找来完成,并在Hieraconfiguration中定义所有的Zookeeper服务器? 还是有没有一种方法,让我不指定所有的节点提前,并让他们相互识别(也许使用自定义的事实)?

我想尽量减less我必须编写的站点特定configuration的数量,所以如果我只能指定“这个节点需要zookeeper模块”,并且它自动发现其他任何拥有zookeeper模块的人,那就太棒了。

系统pipe理员谁做了类似的任何意见,将不胜感激!

使用Hiera是正确的方法,您可以通过使用PuppetDB和PuppetDB Hiera后端来实现所需的dynamic特性。

这允许你在你的Hiera YAML文件中有如下的内容:

 zookeeper::servers::_nodequery: ['Class[Zookeeper]', 'ipaddress'] 

这将为PuppetDB所知道的所有机器返回一个$::ipaddress事实数组,作为其目录的一部分。 然后,可以使用此查询的结果作为其他类的参数。