Chefの動きを確認する時に毎回全部のレシピを当ててると時間がかかってめんどくさいことこの上ないので単体で走らせる方法を探してみました。

試してみてダメだったこと

chef-applyとかsandwichとか色々あるようなんですが、依存関係などの読み込み周りを同一にするのが出来ないようでよくわからなかったので使わないことにしました。

やりたいのはrun_listで走らせる対象を一つだけにしたかったので、nodes/postgresql.jsonなど試したいレシピだけを指定したノードファイルを作ってみたんですが、これはファイル名がhostと一致しないため完全に間違った試行だったようです。

成功した方法

run_listを特定のレシピだけ対象にすればいいので--override-runlistオプションを使えばやりたいことができました。

run_listのデフォルトでrecipeは省略可能なので

でOKです。

参考

Specifying which cookbooks to run with Chef Solo – Stack Overflow


knife solo cook fooとするとBerkshelf::LockfileParserErrorってエラーが出てビビる。

対策

rm Berkshelf.lock で ロックファイルをを消したら治った。.gitignoreに加えてたほうが良いのかな? Gemfile.lockと同じく加えるかどうかに賛否両論ありそう。