Linux環境でServerspecを使ってみる part1

ひさしぶり?に技術関連のお話です。
今日からしばらく、Serverspecのことを取り上げようと思います。

Serverspecって何?

Serverspec - Home

簡単に言うとサーバ向けのテストツールで、サービスの起動停止状態や各種configのテストなどが実施できます。
こういったテストツールを使うことで、システムの構成が頻繁に変わるような環境や規模の大きい環境でも、効果的・効率的にテストを進めることが可能になります。

各種サービスの起動・停止状態をテストするとします。
これを原始的に手動確認する場合、chkconfig/etc/init.d/[service名] statusをサービスごとに確認することになると思います。
このやり方だと、手作業によるミス・漏れが発生するリスクが大きく、ましてや規模の大きいシステムだとなおさら大変なことになります。

Serverspecの場合、以下のような(httpdの例)テストスクリプトを用意しておき、これを実行することで試験対象のサーバのhttpdのサービス起動状態を確認することができます。

describe service('httpd') do
  it { should be_enabled }  # chkconfig 相当の確認
  it { should be_running }   # /etc/init.d/httpd status 相当の確認
end

このような記述をあらかじめ用意しておくことで、一貫性のあるテストを繰り返し実行できるようになります。

ちなみに、ソフトウェア開発の分野ではテスト駆動開発(Test Driven Development:TDD)という、事前にテスト環境を用意してそれをクリアするコードを実装していく開発スタイルがあり、Serverspecを用いてTDDをインフラに応用する動きが出ているようです。

今後やろうとしてること

こちらの記事で、apacheのインストールをやりましたので、これを例にServerspecでapacheのテストをやっていこうと思います。
PuppetでApacheを管理してみる part3 - ressyのナレッジ的なブログ

参考

この記事は、以下を参考にしています。

Serverspec - Home

「Serverspec」を使ってサーバー環境を自動テストしよう - さくらのナレッジ