Help us understand the problem. What is going on with this article?

knife solo cook でsite-cookbooks下のcookbookを認識しない場合の対処法

More than 5 years have passed since last update.
knife solo cook hostname

したときに、非情にもCookBook not foundみたいなエラーが出て、site-cookbooks/下の cookbookを認識してくれない場合の対処法です。

結論

knife solo init . しましょう。
こうすると、カレントディレクトリに.chef/knife.rbが作られます。

% cat .chef/knife.rb
cookbook_path    ["cookbooks", "site-cookbooks"]
node_path        "nodes"
role_path        "roles"
environment_path "environments"
data_bag_path    "data_bags"
#encrypted_data_bag_secret "data_bag_key"

knife[:berkshelf_path] = "cookbooks"

こうなっていればOKです。

どうやって原因をつきとめたのか

対象ホストにsshログインして、
grep -r cookbook_path ~/
すると、

[vagrant@localhost ~]$ grep -r cookbook_path  chef-solo
chef-solo/solo.rb:cookbook_path []
chef-solo/solo.rb:cookbook_path << File.join(base, 'cookbooks-1') # /home/DK/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/knife-solo-0.4.1/lib/knife-solo/resources/patch_cookbooks
chef-solo/solo.rb:cookbook_path << File.join(base, 'cookbooks-2') # /home/DK/.berkshelf/knife-solo/ae694eab015e5d3e2be23b6b507eeb69853234bf
chef-solo/solo.rb:cookbook_path << File.join(base, 'cookbooks-3') # /home/DK/tmp/vagrant/chef-monogod-memcached-tt/cookbooks
[vagrant@localhost ~]$ cd chef-solo/
[vagrant@localhost chef-solo]$ ls
cookbooks-1  cookbooks-2  cookbooks-3  dna.json  nodes  solo.rb
[vagrant@localhost chef-solo]$ cat solo.rb
base = File.expand_path('..', __FILE__)

nodes_path                File.join(base, 'nodes')
role_path                 File.join(base, 'roles')
data_bag_path             File.join(base, 'data_bags')
encrypted_data_bag_secret File.join(base, 'data_bag_key')
environment_path          File.join(base, 'environments')
environment               "_default"

cookbook_path []
cookbook_path << File.join(base, 'cookbooks-1') # /home/DK/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/knife-solo-0.4.1/lib/knife-solo/resources/patch_cookbooks
cookbook_path << File.join(base, 'cookbooks-2') # /home/DK/.berkshelf/knife-solo/ae694eab015e5d3e2be23b6b507eeb69853234bf
cookbook_path << File.join(base, 'cookbooks-3') # /home/DK/tmp/vagrant/chef-monogod-memcached-tt/cookbooks

てな感じになっておりました。
ここで、

  • 何かの設定ファイルのもれで"site-cookbooks"が設定できてないんだろうな
  • knifeコマンドって.chef/knife.rbと関係あるよな
  • .chef/knife.rbってどこにあるんだっけ?あれ、ない。
  • いつ生成されるんだっけ?

と思い至り、原因究明することができました。

DQNEO
PHP/Go/Perl/C/Docker/Linux/Git/AWS
http://dqn.sakusakutto.jp
mercari
フリマアプリ「メルカリ」を、グローバルで開発しています。
https://tech.mercari.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away