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

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

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

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

成功した方法

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

$ knife solo cook my_host --override-runlist "recipe[user]"

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

$ knife solo cook my_host --override-runlist "user"

でOKです。

参考

[Specifying which cookbooks to run with Chef Solo – Stack Overflow][1]