ChefにおけるChildConvergeErrorへの対処法

ChildConvergeErrorに数時間もハマってしまったので,忘れないうちにメモ.

他所さまによって作成されたCookbookを利用して,Virtual環境(hoge)にknife solo cook hogeしたら,以下のようなエラーが発生した.

1
2
3
4
5
6
7
8
9
10
11
12
13
Running Chef on hoge...
Checking Chef version...
Uploading the kitchen...
Generating solo config...
Running Chef...
Starting Chef Client, version 11.6.0
Compiling Cookbooks...
[2014-01-06T20:33:21+00:00] ERROR: Running exception handlers
[2014-01-06T20:33:21+00:00] ERROR: Exception handlers complete
[2014-01-06T20:33:21+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
Chef Client failed. 0 resources updated
[2014-01-06T20:33:21+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
ERROR: RuntimeError: chef-solo failed. See output above.

色々と調べた結果,solo.rbのパス設定が間違っている可能性が高いとのことで,ssh hogeして,solo.rbの内容を調べてみる.

1
2
3
4
5
6
7
8
9
10
11
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')

cookbook_path []
cookbook_path << File.join(base, 'cookbooks-1') # cookbooksへのパス
cookbook_path << File.join(base, 'cookbooks-2') # site-cookbooksへのパス
cookbook_path << File.join(base, 'cookbooks-3') # knife-soloのpatch_cookbooksへのパス

うん?特に問題なさそう.
Virtual環境上でsudo chef-solo -o hoge -l debugして詳細なエラー内容を調べてみたところ,以下のようなメッセージが.

1
2
3
4
[2014-01-06T20:39:18+00:00] ERROR: Running exception handlers
[2014-01-06T20:39:18+00:00] ERROR: Exception handlers complete
[2014-01-06T20:39:18+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[2014-01-06T20:39:18+00:00] DEBUG: Chef::Exceptions::CookbookNotFound: Cookbook hoge not found. If you're loading hoge from another cookbook, make sure you configure the dependency in your metadata

うん???Cookbook hogeなんて指定した覚えがない(hogeはマシン名).
ここで数時間ほど悩み続ける.

色々と試行錯誤した結果,Virtual環境上ではなくローカル環境においてknife solo cook -V hoge(verboseオプションを利用)したら解決した.

1
2
3
4
[2014-01-06T20:45:30+00:00] ERROR: Running exception handlers
[2014-01-06T20:45:30+00:00] ERROR: Exception handlers complete
[2014-01-06T20:45:30+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[2014-01-06T20:45:30+00:00] DEBUG: Chef::Exceptions::CookbookNotFound: Cookbook fuga not found. If you're loading fuga from another cookbook, make sure you configure the dependency in your metadata

エ ラ ー メ ッ セ ー ジ が 変 わ っ た !(必要なcookbookがhogeからfugaへ)
メッセージ通り必要なcookbookを導入したら無事に解決しました.

この原因解決になぜ数時間もかかった自分orz

Comments