1

他のクックブックに多くの依存関係があるシェフのクックブックを作成しました。私の主な問題は、他のクックブックのレシピがランダムな順序で実行されることです。これらのレシピの実行を vagrant ファイルで指定すると、次のようになります。

chef.add_recipe "gitlab::core_prereq"
chef.add_recipe "postfix"
chef.add_recipe "gitlab::users_prereq"
chef.add_recipe "rvm::vagrant"
chef.add_recipe "rvm::system"
chef.add_recipe "ohai"
chef.add_recipe "nginx"
chef.add_recipe "gitlab::python_tools_prereq"
chef.add_recipe "gitlab::gitolite_prereq"
chef.add_recipe "gitlab::gitlab_install"

すべてが正常に機能しますが、ユーザーがデフォルトのレシピを含めるだけで、必要なものをすべて正しい順序でインストールできるように、この仕様をレシピに含めたいと思います。

どうすればこれを解決できますか? ロールを使用する必要がありますか? レシピ内で役割を指定できる場合、シェフのドキュメントからはわかりません。

4

1 に答える 1

1

すべてのレシピをクリーンなマシンにインストールできるとは限りません。しかし、そうあるべきです。レシピ「A」にいくつかの前提条件がある場合は、 を使用して必要なレシピをレシピ「A」に追加する必要がありますinclude_recipe

あなたの場合、gitlab::gitlab_installにはgitlab::gitolite_prereqgitlab ::python_tools_prereqが必要だと思います。つまり、次のように追加する必要がありますcookbooks/gitlab/recipes/gitlab_install.rb

incude_recipe 'gitlab::gitolite_prereq'
incude_recipe 'gitlab::python_tools_prereq'

この方法で、他のクックブックのレシピを含めることもできます。たとえば、ohai にはrvm::systemが必要です。に追加cookbooks/ohai/recipes/default.rb:

incude_recipe 'rvm::system'

に追加しcookbooks/ohai/metadata.rbます:

depends 'rvm'

この方法では、すべてのレシピを正確な順序で記述する必要はなく、すべての依存関係を記述する必要もありません。それらは自動的にインストールされます。

于 2012-09-29T08:58:08.243 に答える