web-dev-qa-db-ja.com

include_recipeを使用するか、レシピをrun_listに追加する必要がありますか?

大規模なプロジェクトに最適なアプローチを見つけようとしています。 include_recipeにレシピを追加するのではなく、run_listを使用してレシピ内にレシピを追加するのが適切な場合経験則はありますか?

66
Micah

私が見るように、どのレシピも空のマシンで単独で実行できるはずです。そのため、一部のレシピAがその前に実行されるレシピBに依存する場合、常にinclude_recipeを使用します。

たとえば、2つのクックブック、TomcatおよびJava。 TomcatにはJavaが必要です。

  1. 一部のユーザーがTomcatをインストールしたい場合、Tomcatを実際にインストールするために他のクックブックが必要であるとは考えていないかもしれません。彼はTomcatレシピを実行し、「No Java found」などの完全に役に立たないエラーメッセージで失敗するか、さらに悪いことに成功しますが、もちろんユーザーはTomcatを起動できません。Javaインストール済み。

  2. ただし、Tomcatクックブックにinclude_recipe 'Java'行があり、メタデータにもdepends 'Java'行が必要な場合、Tomcatをインストールしようとすると、理解しやすいエラーメッセージが表示されます: "the cookbook Java見つかりません」。このように、実際にユーザーは、実際にレシピを実行することなく、メタデータを読み取ることなく、自分で(または自動ツールを使用して)依存関係をダウンロードできます。

78
Draco Ater

すべてのロジックは、実行リストで制御する必要があります。クックブックは、試してみても、人々が考えたいほど再利用できない。すべて include_recipe doesは、ユーザーが実行リストが何をするのかを把握するために探す必要がある別の場所を追加するので、それを明示して実行リストに入れます。

3
davidk01