class - 根据一台机器上安装的类选择 puppet 模板

标签 class templates tomcat configuration puppet

我们使用 Puppet 将 Tomcat7 资源提供给 context.xml 文件以用于 Web 存档。

我们有三个文件,每个文件都需要在 context.xml 中有一组不同的资源条目。只要每个 tomcat 实例有一个工件,使用模板并通过工件填充正确的模板就很容易。

但我们也有这样一种情况,即所有三个工件都安装到一个 tomcat 实例中(用于测试阶段)。在这种情况下,我们同时需要三个工件的所有资源条目。

我想到了两个解决方案,但都不是我真正满意的:

  1. 停止使用模板并使用 augeas lenses 来编辑文件。 缺点:context.xml 是 XML,augeas 的使用容易出错且基本上不可读。

  2. 从工件的类中删除模板复制部分,然后将因子放入子类中,例如 artifact::supply-context(它为单个工件提供正确的配置)。还提供一个类 all_artifacts::supply-context(它为所有上下文提供配置)。
    缺点:类的使用不再透明。一个工件:“包括工件 A、工件 A::supply-context”。所有工件:“包括工件 A、工件 B、工件 C、all_artifacts::supply-context。

有没有人有更好的解决方案或建议?

最佳答案

看到这个问题后,我首先想到的是“concat”模块[1]。您可以将它与模板结合起来,然后将相关部分连接在一起就是一个命令。除此之外,您可以编写自定义文件程序集功能。

  1. https://github.com/ripienaar/puppet-concat

关于class - 根据一台机器上安装的类选择 puppet 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12216570/

相关文章:

c++ - 我得到的输出是 111 的原因是什么?

java - Tomcat JDBC 池连接全部卡在Socket Read,没有创建新连接

spring - 如何为 ServletContextPropertyPlaceholderConfigurer 设置默认上下文参数值?

c++ - 二进制 '<' : 'const_Ty' does not define this operator or a conversion to a type acceptable to the predefined operator

php - OOP如何管理存储在不同文件中的 'include'类

java - 将对象转换为类类型

python - 在 python 中使用类变量作为非默认参数

C++ 链接器错误,未解析的外部

c++ - 模板和惰性初始化

java - ClassNotFoundException : org. slf4j.LoggerFactory Maven 问题