この項目内では3rdパーティーおよび自家製のCookbookの両方をマネージャで管理する前提にしています。
berks vendor
コマンドを割り込みに指定します。
coobook_path [
File.expand_path('../../berks-cookbooks', __FILE__)
]
knife[:before_bootstrap] = "berks vendor"
knife[:before_converge] = "berks vendor"
## ex. under the bundler environment.
# knife[:before_bootstrap] = "bundle/chef exec berks vendor"
# knife[:before_converge] = "bundle/chef exec berks vendor"
Berkshelfとほぼ一緒です。コマンドはbatali update
で読みかえます。
knife[:before_bootstrap] = "batali update"
knife[:before_converge] = "batali update"
## ex. under the bundler environment.
# knife[:before_bootstrap] = "bundle/chef exec batali vendor"
# knife[:before_converge] = "bundle/chef exec batali vendor"
参考: librarian-chef#knife-integration
Gemfileにlibrarian-chef
を追加してbundleします。
gem 'knife-zero'
gem 'librarian-chef'
knife.rb
でcookbook_path
を次のようにして下さい。
require 'librarian/chef/integration/knife'
cookbook_path Librarian::Chef.install_path,
"/path/to/chef-repo/site-cookbooks"
例えば、Chef−Repoのルートにknife.rb
を置いている環境なら次のように記述します。
require 'librarian/chef/integration/knife'
cookbook_path Librarian::Chef.install_path,
File.expand_path("../site-cookbooks", __FILE__)
設定後、knife実行時にCheffile and Cheffile.lock are out of sync!
が出る場合、次のどちらかで解決しましょう。
librarian-chef install
librarian-chef clean