Posted at
ChefDay 2

なぜか Test Kitchen 公式ドキュメントに書いていない .kitchen.yml のリファレンスのありか

More than 3 years have passed since last update.

Chef Advent Calendar 2014 2日目です。と言いつつ、なんか人気が無いようで(なぜだ)、1日目です。


Intro

Chef クックブックのテストツールで、ChefDK にも含まれている Test Kitchen ですが、肝心要のテストランニングの設定ファイルである .kitchen.yml の記法が 公式ドキュメント 内には載っておらず、またリファレンスへのリンクなどもありません。(IRC で聞くか、コード読んでねというスタンス?)

ただ、Test Kitchen 公式とは行きませんが、Chef 本体のドキュメントには、割りと詳細な Test Kitchen のリファレンスが載っています。Chef のドキュメントでは、Test Kitchen ではなく、Kitchen というソフトウェアとして記載されています。

Test Kitchen(Kitchen)のドキュメント

話の要点はこれだけなのですが、これで終わるのは味気ないので、少しTipsを書きます。


Tips


.kitchen.*.yml について

サードパーティ製のクックブックを読むと、.kitchen.cloud.yml などの Kitchen設定ファイルが .kitchen.yml とは別に置かれていることがあります。たとえば、yumクックブックなどがそうです。

kitchen コマンド実行時に参照する .kitchen.yml ファイルの名前は、KITCHEN_YAML という環境変数で変更できるので、たとえば yumクックブックでは以下の手順で .kitchen.yml ファイルを切り替えて開発しているようです。

https://github.com/opscode-cookbooks/yum/blob/master/TESTING.md

より


export KITCHEN_YAML=.kitchen.cloud.yml

bundle exec kitchen test


環境変数には他にも、KITCHEN_LOCAL_YAMLKITCHEN_GLOBAL_YAML があり、デフォルトではそれぞれ .kitchen.local.yml$HOME/.kitchen/config.yml を向いています。

LOCALの方はCIサーバーでのテストなどで、GLOBALの方はユーザーの開発マシン上でグローバルな設定を書くときに使うようです。

該当機能が実装されたプルリク


yaml ファイル内にrubyコードを書く

.kitchen.yml は eRuby スクリプトとして解釈されるので、Rubyのソースコードを書くことができます。これにより、環境変数からクラウドのAPIアクセスキーを取得したり、などいろいろな事ができます。


Outro

ともあれ、この Chef Advent Calendar の人気の無さはなんでしょうか。Qiita周辺で人気が無いだけなのか、それとも Chef でサーバープロビジョニングというモデルがもはや時代遅れになりつつあるのか。

Immutable Infrastructure がバズっているとはいえ、まだまだ Persistent tier の、つまりデータ・ストレージサーバー群のプロビジョニングには、段階的で Stateful なプロビジョニングツールが必要だと考えているのですが、ナウなヤングの関心は離れつつあるのかもしれませんね。