Puppetを使用して、Tomcat7リソースをWebアーカイブのcontext.xmlファイルにプロビジョニングしています。
3つのアーカイブがあり、それぞれがcontext.xmlに個別のリソースエントリのセットを必要とします。テンプレートを使用し、アーティファクトごとに適切なテンプレートを入力するのは、Tomcatインスタンスごとに1つのアーティファクトがある限り簡単です。
ただし、3つのアーティファクトすべてが1つのTomcatインスタンスにインストールされるシナリオもあります(テスト段階用)。この場合、3つのアーティファクトのすべてのリソースエントリを同時に必要とします。
2つの解決策が思い浮かびますが、どちらも私には本当に満足のいくものではありません。
テンプレートの使用をやめ、augeasレンズを使用してファイルを編集します。短所:context.xmlはXMLであり、augeasの使用法はエラーが発生しやすく、ほとんど読み取れません。
アーティファクトのクラスからテンプレートコピー部分を削除すると、factorはartifact :: supply-context(単一のアーティファクトに正しい構成を提供します)のようなサブクラスになります。また、クラスall_artifacts :: supply-context(すべてのコンテキストの構成を提供します)を提供します。
短所:クラスの使用法はもう透過的ではありません。1つのアーティファクト:「artifactA、artifactA::supply-contextを含める」。すべてのアーティファクト: "artifactA、artifactB、artifactC、all_artifacts::supply-contextを含みます。
誰かがより良い解決策や提案を持っていますか?