serverspecでchefのjsonを読み込む

July 31, 2013

2013/12/25 update

Testing #chef Cookbook by #serverspec #devopsの続きみたいなものですが
Chefのjsonファイルでフラグ立てたりしてると、そのフラグによって
テスト対象が変化する場合があるかと思います。
その場合、serverspecにはpropertyの機能があるのでそれを利用します。

spec/spec_helper.rb

{% gist 6118553 spec_helper.rb %}

set_propertyの項目を追加します。

nodes/host.json

{% gist 6118553 nodes_host.json %}

こんな感じでこのMySQLはSlaveですみたいなフラグがあって

cookbooks/mysql/templates/default/my.cnf.erb

{% gist 6118553 cookbooks_mysql_templates_default_my.cnf.erb %}

こんなテンプレートがあったら

cookbooks/mysql/spec/is_slave_spec.rb

{% gist 6118553 cookbooks_mysql_spec_is_slave_spec.rb %}

このようにproperty["mysql"]["is_slave"]として値を利用することができます。

specファイル、if ~ endで囲ってるのがモサいので、良案をお待ちしております