ようへいの日々精進XP

よかろうもん

俺の台所 2 (foodcritic を使って chef の cookbook をチェックする)

要件

  • 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

以下のような結果が表示される。
f:id:inokara:20130407232401p:plain

確認

こちらのサイトで FC から始まる番号で指摘内容を確認することが出来る。
f:id:inokara:20130407233939p:plain

修正して改めて確認!

指摘事項を修正してみる。
f:id:inokara:20130407235436p:plain
修正後、改めて foodcritic を実行。

foodcritic -C ~/vagrant/cookbook

指摘事項の表示は出力されなくなりましたとさ...

Opscode が配布している cookbook を試してみる

nginx の cookbook を git clone してチェックしてみる

git clone git://github.com/opscode-cookbooks/nginx.git
foodcritic -C ./nginx

f:id:inokara:20130408000940p:plain
あら...意外に指摘が多いのね...。

まとめ

  • 試したところ foodcritic はレシピのシンタックスまではチェックしてくれなかった
    • あえて typo なレシピで試してみたけどスルーされた
  • シンタックスのチェックというよりも、cookbook 全体の構成や不備をチェックするツールなのかなって印象
  • cookbook をチェックする方法は foodcritic 以外にも幾つかあるようなので引き続き試してみる