要件
- chef のレシピを試す環境は vagrant を使えばある程度簡単に出来るようになった
- 次は cookbook のチェックを行うツールについて導入を検討する
- まずは foodcritic というツールを試してみる
導入
インストール
ruby のバージョン確認
ruby -v
1.9.2 以上であればインストール可能とのこと。
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
インストール
sudo gem install foodcritic 2>&1 | tee /tmp/hoge
エラーとなってしまう。
checking for libxml/parser.h... no ----- libxml2 is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies. -----
http://nokogiri.org/tutorials/installing_nokogiri.html を参考に必要なツールを追加インストールする。
sudo apt-get install libxslt-dev libxml2-dev
改めてインストール
sudo gem install foodcritic
今度は無事にインストール完了。
オプションを確認する。
foodcritic -h
foodcritic [cookbook_paths] -t, --tags TAGS Only check against rules with the specified tags. -f, --epic-fail TAGS Fail the build if any of the specified tags are matched ('any' -> fail on any match). -c, --chef-version VERSION Only check against rules valid for this version of Chef. -C, --[no-]context Show lines matched against rather than the default summary. -I, --include PATH Additional rule file path(s) to load. -S, --search-grammar PATH Specify grammar to use when validating search syntax. -V, --version Display the foodcritic version.
どうやら、コマンドの後に cookbook の path を指定するといいみたい。
foodcritic ${cookbook}
レシピをチェックしてみる
とりあえず foodcritic を実行
vagrant 用の cookbook をチェックしてみる。-C オプションを付けるとチェックした内容の指摘事項をハイライトで表示表示してくれる。
foodcritic -C ~/vagrant/cookbook
以下のような結果が表示される。
確認
こちらのサイトで FC から始まる番号で指摘内容を確認することが出来る。
修正して改めて確認!
指摘事項を修正してみる。
修正後、改めて foodcritic を実行。
foodcritic -C ~/vagrant/cookbook
指摘事項の表示は出力されなくなりましたとさ...
Opscode が配布している cookbook を試してみる
nginx の cookbook を git clone してチェックしてみる
git clone git://github.com/opscode-cookbooks/nginx.git foodcritic -C ./nginx
あら...意外に指摘が多いのね...。
まとめ
- 試したところ foodcritic はレシピのシンタックスまではチェックしてくれなかった
- あえて typo なレシピで試してみたけどスルーされた
- シンタックスのチェックというよりも、cookbook 全体の構成や不備をチェックするツールなのかなって印象
- cookbook をチェックする方法は foodcritic 以外にも幾つかあるようなので引き続き試してみる