...
https://github.com/sethvargo/chefspec
Chef 専用の動的テストツールで、ChefDK 専用の動的テストツールで、ChefDK に含まれています。
主に Recipe の DSL が期待通りにコンパイルされているかを確認します。
単純な Recipe の場合、Recipe と ChefSpec のテストコードがほぼイコールになってしまい、
同じことを2度書く手間が増えるだけで、特にメリットを感じませんでした。
現状では ChefSpec は利用していませんし、規模の大きい は利用していませんし、よほど規模の大きい Cookbook を作らない限りは今後も利用しないと思います。
...
http://serverspec.org/
サーバーの状態をテストする動的テストツールです。
Chef 専用のものではありませんが、Kitchen 専用のものではありませんが、Kitchen が対応していて、標準で利用可能です。
今回は Kitchen から利用することを前提にすすめます。
テストコードの配置
Kitchen で Serverspec を実行する場合、テストコードを決まったパスに配置する必要があります。
まず、テストコードを配置するディレクトリを作成します。
...
※ "default" の部分は .kitchen.yml で指定した suites の name です。
そして、テストコードのファイル名は *_spec.rb とします。
...
※ _spec.rb の前の部分はなんでもいいようです。 Cookbook のテストの場合は Recipe の名前と同じにするのが多い気がします。
テストコードの記述
Serverspec のテストコードはものすごく簡単で、ドキュメント [ http://serverspec.org/resource_types.html ] を見れば一目瞭然です。 のテストコードはものすごく簡単で、ドキュメントを見れば一目瞭然です。
たとえば、あるパスにファイルが存在することを確認するには、以下のように記述できます。
...
Kitchen で Serverspec を実行
Kitchen インスタンスで インスタンスで Serverspec を実行するには、次のコマンドを使用します。 を実行するには、次のコマンドを使用します。
コード ブロック |
---|
$ kitchen verify |
そうすると、Serverspec が自動的にインストールされ、テストが実行されます。そうすると、Serverspec が自動的にインストールされ、テストが実行されます。
実行結果は以下のようにログに出力されます。
コード ブロック |
---|
Service "jenkins" should be running Finished in 0.04041 seconds 1 example, 0 failures |
情報 |
---|
kitchen verify のほかに、kitchen test コマンドも存在します。 通常 kitchen test ではインスタンスの起動からテストの実行、インスタンスの破棄までを一気に実行します。 |