我正在考虑将我们的部署流程迁移到使用 Puppet。我首先要部署我们用于系统的第三方应用程序,其中包括由 Zookeeper 组合编排的 Solr Cloud。
使用内置 Zookeeper 部署 Solr 云相当简单,但是如果我想使用单独的 Zookeeper 集合,那么我需要在配置中使用以下关键行来部署 Zookeeper:
server.1=ip1:2888:3888
server.2=ip2:2888:3888
server.3=ip3:2888:3888
(例如)。鉴于我无法假设任何有关节点顺序的信息,并且我希望将这一切都基于 Puppet:我应该注意什么才能做到这一点?
我是否需要使用模板和一些 Hiera 查找来执行此操作,并在 Hiera 配置中定义所有 Zookeeper 服务器?或者是否有一种方法允许我不必提前指定所有节点的位置,而是让它们相互识别(可能使用自定义事实)?
我想尽量减少必须编写的站点特定配置的数量,因此如果我可以指定“此节点需要 zookeeper 模块”并且它会自动找到任何其他具有 zookeeper 模块的节点,那就太棒了。
任何做过类似事情的系统管理员的建议都将不胜感激!
答案1
使用 Hiera 是正确的方法,你可以通过使用来实现你想要的动态特性金宝博官方网站随着PuppetDB Hiera 后端。
这样你就可以在 Hiera YAML 文件中拥有类似以下内容:
zookeeper::servers::_nodequery: ['Class[Zookeeper]', 'ipaddress']
这将返回 PuppetDB 所知道的所有机器的事实数组,$::ipaddress
其中 Zookeeper 类是其目录的一部分。然后,您可以将此查询的结果用作其他类的参数。