ようへいの日々精進XP

よかろうもん

Altria を serverspec で使ってみる

やってみたいこと

  • Jenkins で serverspec をキックすることは出来ているので、同じことを Altria でやってみる
  • 実際にリモートホストをテストしてみる

トポロジ

以下のようなトポロジ。トリガーは Altria サーバー側にある。

f:id:inokara:20130730235525p:plain


Altria サーバーの準備

Altria のインストール

拙作で恐縮ですがこちらを。

serverspec のインストールと設定

sudo gem install serverspec --no-ri --no-rdoc -V

ruby 2.0.0p247 (2013-06-27) [x86_64-linux] の場合にインストール後に rspec を実行すると以下のようなエラーが出てしまった。

/usr/local/lib/ruby/2.0.0/rubygems/specification.rb:1990:in `raise_if_conflicts': Unable to activate rspec-2.13.0, because rspec-core-2.14.4 conflicts with rspec-core (~> 2.13.0) (Gem::LoadError)

以下のようにコンフリクトを起こしているバージョンのモジュールを一旦アンインストールした。

sudo gem uninstall -v 2.14.1 rspec
sudo gem uninstall -v 2.14.4 rspec-core

また、serverspec は root ユーザーではなく altria ユーザーで実行する為に spec_helper.rb を以下のように修正する。

altria ユーザーの作成と公開鍵の生成

altria ユーザーを作成して上で altria ユーザーで severspec を実行する。

useradd altria
sudo su - altria
ssh-key-gen -t rsa

リモートホストの準備

基本的には Jenkins で動かす場合と同じように設定を行う。

altria ユーザーの作成と公開鍵の登録

  • altria ユーザーの作成
  • altria サーバー上の altria ユーザーの公開鍵を登録する
  • /etc/sudoersaltria ALL=(ALL) NOPASSWD:ALL を設定する

ジョブの作成

spec ファイル

テストということで、以下のような簡単な spec ファイルを用意した。

ジョブの登録

以下のようにジョブを登録した。

f:id:inokara:20130730233009p:plain


しばらくすると...

ジョブ一覧

f:id:inokara:20130730233327p:plain

上記のようにジョブの結果が一覧となって表示される。

成功

f:id:inokara:20130730233534p:plain

リモートホストへの serverspec が正常に終了した場合には、上記のように緑色のアイコンと共にコンソールの結果が表示される。

失敗

f:id:inokara:20130730233545p:plain

対して失敗の場合には赤いアイコンとコンソールの結果が表示される。


そして

  • Jenkins でも Altria でも同じように servespec を使ってリモートホストをテスト出来る
  • Altria のシンプルなインターフェースおかげで Jenkins からの設定の転載がスムーズに行えた
  • Altria には Jenkins のような API が用意されていると嬉しいのだが...
  • serverspec 単体でも十分な機能を持っているが、CI ツールを利用することでより強力なツールに進化出来る(シンプルに且つ、それぞれ不足している部分はそれを得意とするツールに任せるという設計思想)