Class 根据一台计算机上安装的类选择puppet模板

Class 根据一台计算机上安装的类选择puppet模板,class,templates,tomcat,configuration,puppet,Class,Templates,Tomcat,Configuration,Puppet,我们使用Puppet将Tomcat7资源提供给用于web归档的context.xml文件 我们有三个归档,每个归档都需要context.xml中一组不同的资源条目。只要每个tomcat实例有一个工件,使用模板并通过工件填充正确的工件是很容易的 但我们也有这样一个场景:所有三个工件都安装到一个tomcat实例中(用于测试阶段)。在这种情况下,我们需要同时为这三个工件提供所有资源条目 我想到了两种解决方案,但这两种方案都不能让我满意: 停止使用模板,并使用augeas镜头编辑文件。 Con:cont

我们使用Puppet将Tomcat7资源提供给用于web归档的context.xml文件

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

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

我想到了两种解决方案,但这两种方案都不能让我满意:

  • 停止使用模板,并使用augeas镜头编辑文件。 Con:context.xml是xml,而且augeas的用法很容易出错,而且在很大程度上不可读

  • 从工件的类中删除模板复制部分,factor被输出到一个子类中,如artifact::supply context(它为单个工件提供正确的配置)。还提供一个类all_artifacts::supply context(为所有上下文提供配置)。
    缺点:类的使用不再是透明的。一个工件:“包括工件,工件::供应上下文”。所有工件:“包括工件A、工件B、工件C、所有工件::供应上下文


  • 有谁有更好的解决方案或建议吗?

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