Serverspec 作成補助アプリケーションをリリースしました

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。
本日は Serverspec 作成補助アプリケーションをリリースしたのでお知らせいたします。

skyarch-networks/serverspec-generator-app GitHub

はじめに

Serverspec を使用すると、サーバーのテストをRubyのコードによって自動化することができます。
例えば、HTTPサーバの簡単なテストは以下のようなコードで表すことができます。

# httpd パッケージがインストールされている
describe package('httpd') do
  it { should be_installed }
end

# httpdサービスが有効になっている、実行されている
describe service('httpd') do
  it { should be_enabled }
  it { should be_running }
end

# TCP 80番のポートに外からアクセスできる
describe port(80) do
  it { should be_listening }
end

このRubyコードを実行するだけで、パッケージのインストール、サービスの起動状態、ポートの開放状態について自動的にチェックすることができます。

問題点

このように便利な Serverspec ですが、作成する際にはいくつかの問題点があると思います。
ひとつ目には、慣れないうちはリファレンスを確認しながらでないと作成が難しいことが挙げられます。

例えば、package, service, portなどのテスト対象を決めるもの(Resourceと言います)は、2015年12月17日時点で39個存在します。
また、be_installed, be_enabled, be_runningなどのどのような状態にあるかを指定するもの(matcherと言います)も、それぞれのResourceに対して無数に存在します。

このように多くのResourceやmatcherが存在することで、様々な局面に対してテストを書くことができますが、全てを覚えることは難しいと言えるでしょう。
そのため、Serverspec を作成する人はリファレンスを片手に作成せざるを得ないと思います。


ふたつ目に、Ruby 初心者にとっては敷居が高いことが挙げられます。

Serverspec は Ruby の内部DSLとして実装されています。
これにより Ruby の柔軟性を持っていると言えますが、逆に言うと Ruby でできることならなんでも出来てしまうということです。
Ruby の構文エラーに悩まされたり、意図しない動きをされたりしてしまってはテストを書くことは敷居が高く感じるでしょう。

解決策

今回リリースした Serverspec Generator を使用することで、上記の問題を解決することが可能です。
Serverspec Generator では、GUI から Serverspec を作成することができます。

インストール方法

https://github.com/skyarch-networks/serverspec-generator-app/releases/latest

上記リンクからお使いのOSに合った圧縮ファイルをダウンロードしてください。
展開したフォルダに存在する実行ファイルをダブルクリックすることで実行することができます。

使用方法

Serverspec Generator を起動すると、以下のような画面になります。

serverspec-generator

まずは、Add Resource ボタンを押して Resource を追加します。

そして、テストしたい対象の Resource をセレクトボックスから選択してください。

serverspec-generator-resource

Resource を選択したら、次は Add It ボタンを押して it ブロックを追加します。
そして、先ほどと同じようにセレクトボックスからテストしたい項目のmatcherを選択してください。

serverspec-generator-matcher

matcher に何か引数を渡す必要がある場合、自動的にテキストボックスが現れます。
ここに適当な値を入力することで、ひとつのテストが完成します。

最後に Save as File ボタンを押すことで、作成した Serverspec をファイルに保存することができます。


これだけで一つのテストを作成することができました。
おそらく、最初に挙げた問題点が解決されていることがわかると思います。

どのような Resource/matcher が存在するかは、それらの一覧がセレクトボックスに表示されているため簡単に判別することができます。
また、GUIから自動で Serverspec を生成するため、Ruby のコードを直接書く必要はありません。
そのため、非常にお手軽に Serverspec のテストを作成することが可能です!ぜひお試しください。

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.