こういう仕組みはとても面白いですね! ユニットテストではSpecファイルにテスト内容を記述し、それが想定したレスポンスを返すかどうかでテストを行います。この基本はとてもシンプルで、プログラミング言語以外でも応用が効くでしょう。 ということで作られたのがServerspecです。名前の通り、サーバが想定した通りに設定されているかどうかをテストするツールです。Rubyで記述できるのでプログラミングを組み合わせることで自在にテストができるでしょう。

最初に設定ファイルを生成します。対話型に進められます。

$ 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/httpd_spec.rb
 + spec/spec_helper.rb
 + Rakefile

実際のサーバであればVagrantファイルは不要でしょう。テスト環境であればVagrantを使ってサーバを立ち上げ、そのまま検証ができるようになります。

生成されたファイル。修正してテストを作り込むこともできます。

テスト内容としては80番ポートが空いているかや、httpd.confに指定した設定があるかなどがサンプルとして書かれています。同じ仕組みを使えばデータベースをチェックしたり、Webアプリケーションの設定を確認するといったこともできるでしょう。 ServerspecはPuppetやChefと連携して使うことが想定されているようで、サーバのセットアップを自動化し、より運用負担の少ない仕組みを実現するでしょう。 ServerspecはRuby製、MIT Licenseのオープンソース・ソフトウェアです。 serverspec - Home serverspec/serverspec