文鳥大好きエンジニアのガラクタ置き場

文鳥さんに日々癒されているエンジニアが業務で直面したものについてまとめていく…予定。

Serverspec 入門

今回は Mac OS X 上に Serverspec の環境を構築して遊んでみようと思います。

serverspec.org

Serverspec ってなに?

Serverspec は Ruby で実装を行うサーバ向けのテストフレームワークです。

Ruby の実行環境さえあればよいので Linux / Mac / Windows とどの環境でも実行することが可能です。

あらかじめ用意したテスト用のスクリプトを実行して、目的の要件を満たすようにサーバが構築されているかをチェックするのが主な利用用途になります。

Serverspec の環境構築

必要な gem をインストールしましょう。

$ sudo gem install serverspec
$ sudo gem install highline

これで準備完了です (簡単ですね)。

テンプレートの作成

Serverspec ではテンプレートを作成してくれるという便利な機能があるので今回はそちらを利用させていただきます。

(以下の例では ponteru.dev001 というサーバに対してテストを行うためのテンプレートを作成しています。)

$ 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: n
Input target host name: ponteru.dev001
 + spec/
 + spec/ponteru.dev001/
 + spec/ponteru.dev001/sample_spec.rb
 + spec/spec_helper.rb
 + Rakefile
 + .rspec

これで準備が整ったので、実際にテストをしてみましょう。

テストしてみる

今回は『指定したサーバの22番ポートが Listen になっているか』の確認をするテストをしてみようと思います。

テストの作成

本家の Web サイトに書かれているサンプルをそのまま使用させていただきました。

require 'spec_helper'
 
describe port(22) do
  it { should be_listening }
end

テストの実行

テストの実行は rake spec で行うことができます。

(この際 ASK_SUDO_PASSWORD=1 にしておかないとパスワードを聞いてくれなくてテストに失敗するので注意)

$ rake spec ASK_SUDO_PASSWORD=1                                                                                                                                              
Enter sudo password:
 
Port "22"
  should be listening
 
Finished in 0.42689 seconds (files took 3.77 seconds to load)
1 example, 0 failures

まとめ

Serverspec は Chef や Ansible などの構成管理ツールと連携して使うことで真価を発揮すると思います。 今回はその第一歩として環境構築の方法・簡単な使い方を紹介してみました。