Serverspecの使い方入門、Chefで構成管理するサーバー環境をテスト

Chef で Cookbook/Recipe の作成に一通り慣れてきましたので、Serverspec でサーバー状態のテストを行います。Serverspec は、サーバーテストを行えるように RSpec を拡張したテスト・フレームワークです。

今回は入門編ですが、ざっと Readme や関連エントリーに目を通した感じですと、RSpec を知っていれば馴染みのある感じでとっつきやすそうです。Vagrant 上の CentOS 仮想マシンで、Serverspec によるテストを行います。

Serverspec – Home
GitHub: serverspec

スポンサーリンク

Gemfile に serverspec を追加してインストール

Chef のリポジトリを作成したディレクトリの Gemfile に、serverspec の gem を追加します。

Gemfile

続いて、bundle install。

serverspec-init コマンドで spec ファイル生成

serverspec-init コマンドを実行して、以下のように対話型で作業を進めます。

UN*X、SSH接続、Vagrantを利用、の設定にしました。spec/, Rakefile が生成されています。

~/.ssh/config へ vagrant への SSH 接続設定を追加

serverspec は ssh 接続でサーバーに入った後にテストを実行するので、事前に vagrant に ssh 接続する設定を ~/.ssh/config に追加しておきます。

で、vagrant 仮想サーバーへの ssh 設定を出力してくれるので、以下のようにして ~/.ssh/config に設定を追加する。

実際の出力の確認。

SSH接続の確認。

接続できればOK。

serverspec のテストコードを書く

serverspec-init で作成された httpd_spec.rb を参考にして、nginx 用の spec テストを書きました。

spec/centos.vagrant/nginx_spec.rb

ほぼそのまま英語なので、読めば分かりますね。

serverspec テストの実行

続いて、通常の RSpec テストと同様に serverspec のテストを実行します。

なんか、The machine with the name ‘centos.vagrant’ was not found ~ の警告が出ましたけど、とりあえずテストは6個全て通りました。

これで、サーバーのプロビジョニングにおいても、以下のような TDD/BDD のスタイルで作業を進めることができます。

1. serverspec でテスト(サーバー仕様)を書いてテスト実行 → テストが失敗することを確認
2. プロビジョニング・ツール(Chefなど)を書いてプロビジョニング実行 → テストが成功することを確認

これは、安心感が大きいです。

以上駆け足でしたが、Chef で作成したサーバー環境のテストを行う Serverspec 入門エントリーでした。さてと、これから serverspec ごりごり書いていきまーす!

スポンサーリンク
私は Rails のテストフレームワークには RSpec を使っています。サーバーのテスト用に Serverspec もおすすめです。
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!