ちょっとサーバを構築する案件があったので、どうせなら Chef を使ってみようと思って「Test KitchenではじめるChef入門」を参考に、はじめて Test Kitchen 環境を整えてみた。
Chef そのものについては、これまでもつまみ食い的な勉強をしていたので、少しは分かる(けど、だいぶ忘れていた)。イマドキのレシピの開発方法を知りたくて、比較的新しい記事である上記を参考にして環境を作ったのであった。
とりあえず超基本的なレシピだけを書いてみて、次は Serverspec でのテストだ!と思って書いては見たものの、うまく動かずにハマっていた。書いたはずのテストが仮想サーバへ転送されずになんでだろう?と悩んだ。
結論から言うと、テストを書く場所を間違えていた。chef generate
で作成したディレクトリ構成が次のようになっていて、先に「spec」というディレクトリを見つけたオレは、てっきりその下に Serverspec のテストを書くものだと思い込んでしまっていたのだ。
% ls -1 PROJECT_DIR
[snip]
recipes/
spec/
templates/
test/
実際には「test」のディレクトリ内に書くのが正しかった。そこへ書くことにより、テストファイルが仮想サーバへ転送され、無事にテストが実行された。
その後は、レシピを書いて実行し、そのテストを書いて確認して、、、ということを何度か繰り返して、なんとなくレシピ開発のリズムが分かってきた気がする。テストと実装の順番が違うってのはあるけど、まぁ、最初はそんなもんだろう。
まだちょっと直すべきところは見つかっているし、「Chef での定番方法」なんかは全然見えてないので、まだまだやるべきところは多そう。でも、こういった TDD 的なやりかたって、小規模な達成感の連続があって楽しいね。もっと学びたい。