LoginSignup
41
43

More than 5 years have passed since last update.

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

Posted at
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ってどこにあるんだっけ?あれ、ない。
  • いつ生成されるんだっけ?

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

41
43
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
43