ようへいの日々精進XP

よかろうもん

serverspec で複数ホストを一気にテストしてみた(2)

概要

  • 前回は attribute でホスト固有の情報を別に持てるようになった
  • spec ファイルの共有は出来ないか考えてみた

内容

バージョンアップ

タイムラインを見ていたら @gosukenator さんが直接呟かれていたので、さっそくバージョンアップした。

gem について(も)よく理解していないが、普通に gem install serverspec でバージョンアップが出来た。

spec ファイルの共有手段の検討

こちらに記載されている通りに行う前に自分なりに考えた方法として以下のようなディレクトリ構成で設定してみた。

% tree
.
├── Rakefile
├── attributes.yml
└── spec
    ├── app
    │   └── app_spec.rb
    ├── base
    │   └── default_spec.rb
    ├── host1
    │   ├── app_spec.rb -> ../app/app_spec.rb
    │   └── default_spec.rb -> ../base/default_spec.rb
    ├── host2
    │   ├── app_spec.rb -> ../app/app_spec.rb
    │   └── default_spec.rb -> ../base/default_spec.rb
    └── spec_helper.rb

邪道かもしれないが、上記のように spec ディレクトリにそれぞれ基本となるディレクトリ(appbase)を作成し、その直下に app_spec.rbdefault_spec.rb を設置し、それぞれをホストディレクトリ(host1host2)にリンクを設定する。

spec ファイル

app_spec.rb は以下のようにアプリケーションサービスのポート及び設定ファイル内の設定(ホスト固有の情報)についてテストを行えるように書いた。(実際はもちょっとちゃんと書いてるけど...)

default_spec.rb は前回と同様に /etc/hosts/etc/hostname 等のガチなホスト固有情報をテスト出来るように書いた。

attributes.yml にはホスト固有の情報(ホスト名と IP アドレス)を設定した。

テスト

うまくテストが通るか半信半疑ながら、以下のようにテストを実行したところテストは正常に終了した。

ASK_SUDO_PASSWORD=1 rspec spec/host1 spec/host2

まとめ

  • 前述の通り、完全に邪道かもしれないが、シンボリックリンクによるホスト間の spec ファイルの共有が出来た
  • describe file で指定される部分が attribute で指定出来ないか試行錯誤したが、こちらは現時点では設定することが出来なかった(そもそも出来ないのかな...)
  • 次回は正統派を試してみたい...