多个 Puppet 类需要访问一个资源并向其附加一个值,因此在评估其他类之后,另一个类可以对其进行迭代

多个 Puppet 类需要访问一个资源并向其附加一个值,因此在评估其他类之后,另一个类可以对其进行迭代

我对 Puppet 还比较陌生,最近继承了一个非常大的基础设施(许多 RHEL 6 机器上的 Puppet 3.6)。

我的 Puppet 基础设施看起来有点像这样:

我有 my_module::mysql,它可以安装和配置 MySQL(基于从 Dashboard 或包含它的其他类传递给它的参数)。除其他许多功能外,它还设置日志文件的位置。(还有许多其他类似的类,有时此类可能在同一节点上以几种不同的方式调用。)

我现在有 my_module::flume,它可以安装并配置 Apache Flume,以便我可以将一些日志发送到其他地方。

我的问题:我需要 my_module::flume 知道 my_module::mysql 的每个实例将其日志文件放在哪里,这样它就可以将这些文件添加到 Flume 配置文件中。

最好的方法是什么?我想能够添加某种资源(全局变量或文件),每个类都可以添加文件路径,因此 my_module::flume 可以遍历列表并将每个路径添加到配置文件,但我不确定如何做到这一点,同时仍确保:

-每次 Puppet 运行时,日志文件列表都会重新开始(例如,不再存在的日志文件不会出现在列表中。)

-仅当所有其他类都将路径添加到列表中后,才会评估 Flume 类。

任何意见都将受到赞赏。

答案1

你应该

  1. 使用管理配置文件连接模块。
  2. 使每个实例my_module::mysql创建一个虚拟的连接片段
  3. 已经my_module::flume意识到所有这些虚拟片段

这或许足以解决整个问题。

相关内容