我们正在使用 Puppet 将 Tomcat7 资源配置到 web 存档的 context.xml 文件。
我们有三个档案,每个档案都需要 context.xml 中的一组不同的资源条目。只要我们每个 tomcat 实例有一个工件,使用模板并通过工件填充正确的模板就很容易。
但是我们也有将所有三个工件都安装到一个 tomcat 实例中的场景(用于测试阶段)。在这种情况下,我们同时需要三个工件的所有资源条目。
我想到了两个解决方案,这两个解决方案对我来说都不是很满意:
停止使用模板并使用 augeas 镜头编辑文件。缺点:context.xml 是 XML,并且 augeas 的使用容易出错并且在很大程度上不可读。
从工件的类中删除模板复制部分,并将因子放入子类中,例如 artifact::supply-context (它为单个工件提供正确的配置)。还提供一个类 all_artifacts::supply-context(它为所有上下文提供配置)。
缺点:类的使用不再透明。一个工件:“包括 artifactA, artifactA::supply-context”。所有工件:“包括 artifactA、artifactB、artifactC、all_artifacts::supply-context。
有没有人有更好的解决方案或建议?