tkuchikiの日記

Linux やプログラミングについて書きます。

knife コマンドで cookbook(や metadata.rb, README.md) を作成するのを knife コマンド外から行う

執筆時の chef のバージョンは、以下のとおりです。

$ rpm -q chef
chef-11.16.4-1.el6.x86_64

chef/cookbook_create.rb at 11.16.4 · opscode/chef · GitHub

をみると、

  • create_cookbook
  • create_changelog
  • create_readme
  • create_metadata

という method があります。

あとは、

create_cookbook = Chef::Knife::CookbookCreate.new
create_cookbook.create_{cookbook,changelog,readme,metadata}(args...)

とすれば良いです。
調査時に使いたかったのは create_metadata だったのですが、
Chef::Cookbook::Metadata.from_file で読み込んで、
metadata.rb を上書きするという用途で使えるものではありませんでした。

※追記

chef/cookbook_metadata.rb at 11.16.4 · opscode/chef · GitHub
というものもありました。