2

puppet マニフェストを作成し、puppet を使用してシステムをデプロイしています。現在、マニフェストを保守可能にするためにリファクタリング中です。

サブシステムの 1 つは webapplications を備えた tomcat です。〜10個のWebアプリがあります。それぞれのデプロイ手順はほぼ同じです。今のところ私はクラスを使用しています。10 個のファイル - ほぼ同じ。

パラメータ化されたクラスを使用しようとすると、puppet で一度だけインスタンス化できます。次に、webapp クラスから継承する「空の」クラスを作成しようとしました。パラメータが親クラスに渡されていないとパペットが文句を言うため、うまく機能しません。

コードを抽象化できる方法はありません。どうやってするの?

私は達成したいと思います:

   node {
     class {"webapp::first": param1 = one}
     class {"webapp::second": param1 = two}   
   }

ここで、1 番目と 2 番目は同じレシピを使用するアプリケーションです。

定義があることは知っていますが、レシピはかなり大きく、たとえそれが可能であったとしても、クラスはより読みやすいと思います。

4

2 に答える 2

4

クラスでパラメーターを使用できますが、定義はもっと必要なものです。公式ドキュメントの引用

クラスと定義済みの型は同様に作成されますが、使用方法は大きく異なります。

定義済みタイプは、特定のホストで複数のインスタンスを持つ再利用可能なオブジェクトを定義するために使用されるため、インスタンスが 1 つしかないリソースを含めることはできません。たとえば、 > 同じ定義を複数回使用しても、同じファイルを作成することはできません。

http://docs.puppetlabs.com/guides/language_guide.html#resource-collectionsを参照してください

于 2011-09-28T08:34:56.860 に答える
0

ユーザー定義型クラスを使用しようとするのは、本質的にシングルトンです

于 2013-04-17T15:44:28.437 に答える