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

今回はこちらの続きで、特定のサーバだけテストしたり、特定の設定だけテストする方法を解説します。
前回:Linux環境でServerspecを使ってみる part5 - ressyのナレッジ的なブログ

特定のサーバだけテストする

私の勉強環境を例にとると、サーバはWEB01DBS01MGS01の3種類があります。
前回記事で解説したテスト方法だと、毎回全てのサーバをテストすることになります。
しかし、実際の運用では「WEB01だけ設定を変えたからWEB01だけテストしたい」という場面もあると思います。

Serverspecでは、このようなテストも可能です。
具体的にはこのようなコマンドを実行します。

$ ASK_SUDO_PASSWORD=1 bundle exec rake spec:WEB01

rakeの後にspec:<テスト対象サーバ>を指定すればOKです。
これにより./spec/<テスト対象サーバ>/配下に格納したテストが実行されます。

特定の設定だけテストする

特定のサーバに加え、例えば「httpdだけをテストしたい」という場面もあると思います。
そのような実行も可能です。
例えば以下のようなコマンドを実行します。

$ TARGET_HOST=WEB01 ASK_SUDO_PASSWORD=1 bundle exec rspec spec/WEB01/http_spec.rb

使用するオプションもコマンドも変わってることがわかるかと思います。 TARGET_HOSTで、試験対象のサーバを指定します。
rspec spec/WEB01/http_spec.rbで、spec/WEB01/http_spec.rbに記述されたテストのみ実行することを表しています。
ここにhttpd関連のテストだけを記述すればいいわけです。

ところで実行するコマンドがrakeではなくrspecになっています。
詳しくは省略しますが、以前serverspec-initで初期設定を行った時に生成されたRakefileは、サーバ単位or全サーバを対象にテストを行うように記述されています。
なので、rakeコマンドではなくrspecコマンドを使用しています。

テストの実行方法の解説は以上です。
次回は、apacheを例にテストコードを書いてみたいと思います。

参考

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

Serverspec - Home

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