Chefのテストツール kitchen-ec2を使う – serverspecでテストを実施する
こんにちは。望月です。
以前書いたエントリ、Chefのテストツール kitchen-ec2を使う – 導入、チュートリアル | Developers.IOの続きとして、kitchen-ec2を利用したテストを実行してみます。kitchen-ec2では様々なテストフレームワークを利用可能なようですので、今回はserverspecを利用したいと思います。
設定
前回のブログの続きという想定で実施します。前回はapache2.4のレシピをkitchenを利用してEC2で起動し、Chef クックブックを適用するところまで行いました。
まずは、serverspecのspecファイルを作成しましょう。serverspecではサーバの現在の状態をRSpecの記法を利用して記述します。
kitchenでserverspecを利用するためには所定のディレクトリに*_spec.rbを配置します。ディレクトリ名はtest/integration/<テストスイート名>/<テストフレームワーク名>となるようです。ですので、defaultスイートでserverspecを利用する場合のディレクトリ名はtest/integration/default/serverspecとなります。
mkdir -p test/integration/default/serverspec
次にspecを作成します。今回はtest/integration/default/serverspec/httpd24.rbを作成しました。
require 'serverspec' include Serverspec::Helper::Exec include Serverspec::Helper::DetectOS RSpec.configure do |c| c.before :all do c.path = '/sbin:/usr/sbin' end end describe package('httpd24') do it { should be_installed } end describe service('httpd') do it { should be_enabled } it { should be_running } end describe port(80) do it { should be_listening.with('tcp') } end
serverspecに触れたことが無い方でも、何をしようとしているかが伝わってくるのではないでしょうか。この簡潔で直感的な既述がserverspecの魅力だと思っています。
さて、それではテストの実行です。前回のエントリで既にkitchen convergeを実行していますので、Chefレシピの適用は終わっています。serverspecを適用するkitchen verifyコマンドを実行しましょう。
$ kitchen verify default-AmazonLinux-201403 -----> Starting Kitchen (v1.2.1) -----> Verifying <default-AmazonLinux-201403>... Removing /tmp/busser/suites/serverspec Uploading /tmp/busser/suites/serverspec/httpd24_spec.rb (mode=0644) -----> Running serverspec test suite /opt/chef/embedded/bin/ruby -I/tmp/busser/suites/serverspec -S /opt/chef/embedded/bin/rspec /tmp/busser/suites/serverspec/httpd24_spec.rb --color --format documentation Package "httpd24" should be installed Service "httpd" should be enabled should be running Port "80" should be listening Finished in 0.49847 seconds 4 examples, 0 failures Finished verifying <default-AmazonLinux-201403> (0m6.13s). -----> Kitchen is finished. (0m7.24s)
テストが実行されました。かなり簡単にテストが実行できるので、これはぜひ皆さんに試してほしいと思います。
まとめ
非常に短いエントリになりましたw。というのも、公式ドキュメント通りに設定すればほぼ迷わず設定と動作確認までが実施できたからですね。これでテストの実行は行えたので、あとはひたすらテスト項目を拡充していくことが重要だと思います。
そして、もう一つやり残していることがあるので、それはまた次のブログでご紹介しようと思います。