1

Puppetを使用して、Tomcat7リソースをWebアーカイブのcontext.xmlファイルにプロビジョニングしています。

3つのアーカイブがあり、それぞれがcontext.xmlに個別のリソースエントリのセットを必要とします。テンプレートを使用し、アーティファクトごとに適切なテンプレートを入力するのは、Tomcatインスタンスごとに1つのアーティファクトがある限り簡単です。

ただし、3つのアーティファクトすべてが1つのTomcatインスタンスにインストールされるシナリオもあります(テスト段階用)。この場合、3つのアーティファクトのすべてのリソースエントリを同時に必要とします。

2つの解決策が思い浮かびますが、どちらも私には本当に満足のいくものではありません。

  1. テンプレートの使用をやめ、augeasレンズを使用してファイルを編集します。短所:context.xmlはXMLであり、augeasの使用法はエラーが発生しやすく、ほとんど読み取れません。

  2. アーティファクトのクラスからテンプレートコピー部分を削除すると、factorはartifact :: supply-context(単一のアーティファクトに正しい構成を提供します)のようなサブクラスになります。また、クラスall_artifacts :: supply-context(すべてのコンテキストの構成を提供します)を提供します。
    短所:クラスの使用法はもう透過的ではありません。1つのアーティファクト:「artifactA、artifactA::supply-contextを含める」。すべてのアーティファクト: "artifactA、artifactB、artifactC、all_artifacts::supply-contextを含みます。

誰かがより良い解決策や提案を持っていますか?

4

1 に答える 1

2

この問題を見て最初に頭に浮かぶのは、「concat」モジュール[1]です。テンプレートと組み合わせて、関連するパーツを連結することができます。それ以外に、カスタムファイルアセンブリ機能を作成することもできます。

  1. https://github.com/ripienaar/puppet-concat
于 2012-09-09T10:44:39.207 に答える