我们使用 Puppet 将 Tomcat7 资源提供给 context.xml 文件以用于 Web 存档。
我们有三个文件,每个文件都需要在 context.xml 中有一组不同的资源条目。只要每个 tomcat 实例有一个工件,使用模板并通过工件填充正确的模板就很容易。
但我们也有这样一种情况,即所有三个工件都安装到一个 tomcat 实例中(用于测试阶段)。在这种情况下,我们同时需要三个工件的所有资源条目。
我想到了两个解决方案,但都不是我真正满意的:
停止使用模板并使用 augeas lenses 来编辑文件。 缺点:context.xml 是 XML,augeas 的使用容易出错且基本上不可读。
从工件的类中删除模板复制部分,然后将因子放入子类中,例如 artifact::supply-context(它为单个工件提供正确的配置)。还提供一个类 all_artifacts::supply-context(它为所有上下文提供配置)。
缺点:类的使用不再透明。一个工件:“包括工件 A、工件 A::supply-context”。所有工件:“包括工件 A、工件 B、工件 C、all_artifacts::supply-context。
有没有人有更好的解决方案或建议?
最佳答案
看到这个问题后,我首先想到的是“concat”模块[1]。您可以将它与模板结合起来,然后将相关部分连接在一起就是一个命令。除此之外,您可以编写自定义文件程序集功能。
关于class - 根据一台机器上安装的类选择 puppet 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12216570/