大規模なプロジェクトに最適なアプローチを見つけようとしています。 include_recipe
にレシピを追加するのではなく、run_list
を使用してレシピ内にレシピを追加するのが適切な場合経験則はありますか?
私が見るように、どのレシピも空のマシンで単独で実行できるはずです。そのため、一部のレシピAがその前に実行されるレシピBに依存する場合、常にinclude_recipeを使用します。
たとえば、2つのクックブック、TomcatおよびJava。 TomcatにはJavaが必要です。
一部のユーザーがTomcatをインストールしたい場合、Tomcatを実際にインストールするために他のクックブックが必要であるとは考えていないかもしれません。彼はTomcatレシピを実行し、「No Java found」などの完全に役に立たないエラーメッセージで失敗するか、さらに悪いことに成功しますが、もちろんユーザーはTomcatを起動できません。Javaインストール済み。
ただし、Tomcatクックブックにinclude_recipe 'Java'
行があり、メタデータにもdepends 'Java'
行が必要な場合、Tomcatをインストールしようとすると、理解しやすいエラーメッセージが表示されます: "the cookbook Java見つかりません」。このように、実際にユーザーは、実際にレシピを実行することなく、メタデータを読み取ることなく、自分で(または自動ツールを使用して)依存関係をダウンロードできます。
すべてのロジックは、実行リストで制御する必要があります。クックブックは、試してみても、人々が考えたいほど再利用できない。すべて include_recipe
doesは、ユーザーが実行リストが何をするのかを把握するために探す必要がある別の場所を追加するので、それを明示して実行リストに入れます。