多个Puppet类需要访问资源并为其添加一个值,所以在其他类被评估之后,另一个类可以遍历它

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

我的Puppet基础结构看起来有点像这样:

我有my_module :: mysql,它将安装和configurationMySQL(基于从仪表板或包含它的其他类传递给它的参数)。 在许多其他事情中,它设置日志文件的位置。 (还有一些类似的类,有时这个类可能在同一个节点上被称为几种不同的方法。)

我现在有了my_module :: flume,它可以安装和configurationApache Flume,所以我可以在别处发布一些日志。

我的问题是:我需要my_module :: flume来知道my_module :: mysql的每个实例在哪里放置它的日志文件,所以它可以将它们添加到Flumeconfiguration文件中。

做这个的最好方式是什么? 我想我可以添加到某种types的资源(一个全局variables或文件),每个类可以添加一个文件path,所以my_module :: flume可以迭代通过列表,并将每个path添加到configuration文件,但我不知道如何做到这一点,同时仍然确保:

每次运行Puppet时都会启动日志文件列表(例如,不存在的日志文件不在列表中)。

Flume类只有在所有其他类已将path添加到列表之后才被评估。

任何input将不胜感激。

你应该

  1. 使用concat模块pipe理configuration文件。
  2. 使my_module::mysql每个实例都创build一个虚拟 concat片段
  3. my_module::flume实现所有这些虚拟片段

这可能足以解决整个问题。