一人Web開発~第3夜(2) サーバ共通設定のテスト
サーバ共通設定としてcookbooks/commonで導入した内容のテストを書きます。
テスト対象はタイムゾーンの設定とNTPの設定の2つです。
テストを書く
タイムゾーンのテストはこんな感じ。
# spec/localhost/timezone_spec.rb require 'spec_helper' describe file('/etc/localtime') do it { should be_linked_to '/usr/share/zoneinfo/Asia/Tokyo' } end
ちゃんとリンクされていることをテストします。
NTPのテストはこちら。
# spec/localhost/ntp_spec.rb require 'spec_helper' describe package('ntp') do it { should be_installed } end describe service('ntpd') do it { should be_enabled } it { should be_running } end describe port(123) do it { should be_listening } end describe file('/etc/ntp.conf') do it { should be_file } it { should contain "tinker panic 0" } it { should contain "server ntp.nict.jp" } end
インストールや起動設定、設定ファイルのテストをしています。
テストを実行する
rspecを使ってテストを実行します。
# /opt/chef/embedded/bin/rspec spec ........ Finished in 0.57207 seconds 8 examples, 0 failures
無事に通りました。
あとはサーバの設定を追加するたびにテストを書いていくことになります。
serverspecでテストできること
基本的に、設定関連のテストをするのがメイン。
「設定が正しくなされているか?」をテストするのだけれど、実際1台のサーバを1回だけテストするのであれば目検でも十分と言える。
serverspecの設定ファイル関連のテストで気を付けいないといけないのは、「ファイルに指定文言が含まれているか?」が主なテストになる。たとえ全ての項目を書いたとしても「それ以外が含まれていないこと」のテストはできないので、それをやりたければ工夫する必要がありそう。
個人的には、全部ではなく重要な項目(これも主観になるけれど)についてのみ、設定ファイル項目をテストするのがよいのではなかろうか。
とは言え今回初めてなので、もう少し使って「いい具合」を見つけたいと思います。