2016-09-29 11 views
1

アプリケーションをインストールするレシピ(install_app)を持つ料理ブック(CB1)があります。 install_appはCB1で実際に一連の他のレシピを実行し、属性を使用してインストールするアプリケーションとアプリケーションの設定を変更します。シェフに異なる属性でレシピを複数回実行させる

CB1属性を設定する各アプリケーションのレシピがあり、次にそれぞれinclude_recipe CB1::install_appを呼び出します。

しかし、これはうまくいかないようです。シェフは実行リストのすべてのレシピを最初にコンパイルしてから実行し、include_recipe CB1::install_appへの最初の呼び出しのみが実行されます。

シェフにレシピを複数回実行させるにはどうすればよいですか?

答えて

4

これは不可能です。レシピはシングルトンとみなされます。あなたが望むのは、代わりにカスタムリソースを作ることです。次に、そのリソースをさまざまな入力(プロパティ)で複数回呼び出すことができます。

+0

ArgこれをLWRPにする唯一の方法はありますか?シェフにこれをさせる方法はありますか? include_recipe_nowという名前のものが見えましたが、これは私の望むように見えるかもしれません。 – red888

+1

いいえ、 'now'の料理本は、コンパイルとコンバージのものを混乱させるためのものです。技術的にはこれは可能ですが、それはすべての種類のものを壊し、どのようにあなたに伝えるつもりはありません:Pあなたの既存のレシピコードを取ってそれをカスタムリソースのアクションブロックに貼り付けます。 。そして、変更する必要のあるもの(例えば、 'node ['foo']' - > 'new_resource.foo')をファイルの先頭に' property:foo'を加えて置き換えます。次に、入力としてノードattrsを使用してカスタムリソースを複数回呼び出すための新しいレシピファイルを作成します。 – coderanger

+0

この定義を使用できますか?私が読んでいるものから "定義は、1つ以上の他のリソースを一緒にグループ化するラッパーを作成します"。彼らはまたこの目的を果たすように見えますか?一方の利点は?定義はより単純であるように見えます。 – red888

関連する問題