この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは。望月です。
以前書いたエントリ、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。というのも、公式ドキュメント通りに設定すればほぼ迷わず設定と動作確認までが実施できたからですね。これでテストの実行は行えたので、あとはひたすらテスト項目を拡充していくことが重要だと思います。
そして、もう一つやり残していることがあるので、それはまた次のブログでご紹介しようと思います。