こんにちは!beardです!
Serverspecでテスト対象のOSごとにテスト項目を変える処理を実行してみます。
これとは別にHDDの容量をサーバースペックで確認する方法についても紹介します。
Serverspecのインストールと基本的な操作については、過去の記事『Amazon OSS編~Serverspecパート①~』をご覧ください。
1. 今回テストする環境
OSごとにテスト項目を切り替えたいということで以下の二つのテスト対象を用意します。CentOSではhttpdを、Ubuntuではapache2のサービスとなっております。
CentOS6.5 IPアドレス:54.64.15.205
Ubuntu14.04 IPアドレス:54.64.126.211
ディレクトリ構成とRakefileとspec_helper.rbは『Serverspecでサーバ情報をファイルに保存してテストする方法』の記事と同じです。
1 2 3 4 5 6 7 |
Serverspec ├Rakefile ├ubuntu-centos.yml ←上記二つのサーバ情報を書きます ├spec ├spec_helper.rb └web └httpd_spec.rb ←今回はHTTPD(apache)のみ |
ubuntu-centos.ymlの内容
1 2 3 4 5 6 |
54.64.15.205: :roles: - web 54.64.126.211: :roles: - web |
httpd_spec.rbbの内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
require 'spec_helper' #CentOS if os[:family] == 'RedHat' ←CentOSはRedHat系 describe package('httpd') do it { should be_installed } end describe service('httpd') do it { should be_enabled } it { should be_running } end end #Ubuntu if os[:family] == 'Ubuntu' ←OSがUbuntuの場合 describe package('apache2') do ←Ubuntuの場合httpdではなくapache2 it { should be_installed } end describe service('apache2') do it { should be_enabled } it { should be_running } end end #CentOS&Ubuntu describe port(80) do ←両OS共通のテスト項目(ポート番号) it { should be_listening } end |
2. このようにファイルを変更した後、「rake spec」コマンドでテストを開始します。
1 2 3 4 5 6 7 8 9 10 11 12 |
$rake spec Enter Servers.yml(full path): /usr/local/serverspec/ubuntu-centos.yml /usr/bin/ruby2.0 -S rspec spec/web/httpd_spec.rb .... Finished in 0.15157 seconds 4 examples, 0 failures ←1つのサーバに対し4つのテスト項目を実施している /usr/bin/ruby2.0 -S rspec spec/web/httpd_spec.rb .... Finished in 0.05528 seconds 4 examples, 0 failures ←1つのサーバに対し4つのテスト項目を実施している |
3. 異なるOSのサーバでもひとつのコードでテストされました!
解説
Serverspecでは os[:family] を使うことでテスト対象のOSを認識して、以下のようなif文による制御も可能となっております。
1 2 3 |
if os[:family] == 'テスト対象のOS' テスト項目 end |
いかがでしたか?
異なるOSでもひとつのコードで簡単にテストすることが可能です。
次回もお楽しみに!!