Vagrant環境にServerspecを実行

Tag:

「Serverspec」は、サーバー環境を自動テストするためのRuby製ツールです。ここでは、「Serverspec」をインストールして動作確認するところまで紹介します。

なお、ここでは、「開発環境 : WindowsのVagrant環境でchefを実行する方法 | DN-Web64」で作成した環境にServerspecを実行していきます。

基礎知識

specファイル
「serverspec-init」コマンドにより作られたスクリプト
Rake
specファイルを実行するのに必要

Serverspecをインストール

コマンドプロンプトを開き、下記コマンドを実行。

$ gem install serverspec
$ gem install rake

serverspec

テストスクリプト作成

Serverspecをインストールできたら、「serverspec-init」コマンドを利用できるようになります。

Vagrantfileのあるディレクトリに移動(今回は「C:\chef_test」)して「serverspec-init」コマンドを実行すると、対話的な操作でテストスクリプトを作成できます。すでに作成したVagrant環境にServerspecを実行するためには次のように選択します。

C:\chef_test>serverspec-init
Select OS type:

  1) UN*X
  2) Windows

Select number: 1

Select a backend type:

  1) SSH
  2) Exec (local)

Select number: 1

Vagrant instance y/n: y
Auto-configure Vagrant from Vagrantfile? y/n: y
 + spec/
 + spec/default/
 + spec/default/sample_spec.rb
 + spec/spec_helper.rb
 + Rakefile
 + .rspec

すると、下記のようにServerspec関連のファイル(specフォルダ、.rspec、Rakefile)が作成されます。
serverspec2

specフォルダの配下は以下の通りです。

spec/
├── default
│   └── sample_spec.rb ← このファイルにテストケースが書かれています。
└── spec_helper.rb ← テスト実行時に、vagrant up してログインしているようです。

テスト実行

デフォルトで作成された、「spec/default/sample_spec.rb」では、テストケースとしてapacheがインストールされていて起動状態にあるかチェックしています。

開発環境 : WindowsのVagrant環境でchefを実行する方法 | DN-Web64」では、apacheのインストールと起動を行うように設定しているので、sample_spec.rbのテストに成功するはずです。

実際に試してみます。serverspec-initコマンドを実行したディレクトリにてrakeコマンドを実行すると、テストが実行されます。
serverspec3

無事テストに成功したようです。

テスト実行|失敗パターン

失敗したときにはどのように表示されるのかも見てみましょう。

「spec/default/sample2_spec.rb」というファイルを作成します。
serverspec4

「spec/default/sample2_spec.rb」には次のようなテストケースを記述します。

require 'spec_helper'

describe file('/etc/httpd/conf/httpd.conf') do
  it { should be_file }
  its(:content) { should match /ServerName abcd/ }
end

「/etc/httpd/conf/httpd.conf」内に、「/ServerName abcd/」という正規表現にマッチするテキストが含まれているかチェックしているのですが、「開発環境 : WindowsのVagrant環境でchefを実行する方法 | DN-Web64」ではこのような設定をしていないので、テスト失敗となるはずです。

試してみます。再度、rakeコマンドを実行します。
serverspec5

失敗した場合は赤文字で表示されるようですね。

スポンサーリンク