我正在考虑将我们的部署过程迁移到使用 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 模块的节点,那就太好了。
来自做过类似事情的系统管理员的任何建议将不胜感激!
使用 Hiera 是正确的方法,您可以通过使用PuppetDB和PuppetDB Hiera 后端来实现您想要的动态特性。
这允许您在 Hiera YAML 文件中包含以下内容:
这将为 PuppetDB 知道的所有机器返回一系列
$::ipaddress
事实,其中 Zookeeper 类作为其目录的一部分。然后,您可以将此查询的结果用作其他类的参数。