serverspec実行できるところまで試してみる
serverspecとは、サーバの状態をテストするためのフレームワークで、Rubyで実装されておりRSpecの書き方に準拠している。
公式サイトはこちら http://serverspec.org/
今回、インストールをして簡単なテストが実行できるところまでを試してみたのでメモ。
- インストール
$ gem install serverspec
するだけでOK.
- 初期化
serverspecを実行するサーバ上でserverspecの初期化処理を実施。
$ serverspec-init
対話形式で下記のような設定を行う。
Select OS type: 1) UN*X 2) Windows Select number: 1 Select a backend type: 1) SSH 2) Exec (local) Select number: 1 ←SSH接続をしてリモートのサーバに対してテスト実行する場合は1を Vagrant instance y/n: n Input target host name: dev1-web1 + spec/ + spec/server-01/ + spec/server-01/httpd_spec.rb + spec/spec_helper.rb + Rakefile
~/.ssh/config に 上記で設定したhost name と、実際のテスト対象のserver host情報、ログインユーザ情報を書いておく。
Host dev1-web01 HostName dev-web01.hoge.hoge.hoge User watashi
serverspecのテストでは sudo 実行環境が必要なので、テスト対象のサーバで visudoを実行し、test実行ユーザのSUDO権限を設定しておく
$ sudo visudo watashi ALL=(ALL) ALL
この設定の場合、sudo実行時にパスワード入力が必要になる。
serverspecの実行時に、SUDO_PASSWORDもしくは、ASK_SUDO_PASSWORD環境変数を設定することでテスト実行が可能となる。
パスワードを環境変数に設定したくない場合には、環境変数「ASK_SUDO_PASSWORD」を1に設定することでテスト実行時に対話式でsudoパスワードを入力することが可能。
$ export ASK_SUDO_PASSWORD=1
- サンプルテストコード
serverspecがちゃんと動くかどうか確認するための簡単なテストを実行してみよう。
初期化で作成された sample_spec.rbを下記のように書き換える。
require 'spec_helper' set :request_pty, true describe package('nodejs'), :if => os[:family] == 'ubuntu' do it { should be_installed } end describe service('hogehoge'), :if => os[:family] == 'ubuntu' do it { should be_running } end describe port(2000) do it { should be_listening } end
これで rake specを実行すると、
「highline is not available. Try installing it.」
と、'highline'が無いと怒られたので、gem install highline でインストール。
その後、rake specでテストが無事実行されることを確認。
$ rake spec Package "nodejs" should be installed Service "hogehoge" should be running Port "2000" should be listening Finished in 0.27195 seconds (files took 3.97 seconds to load) 3 examples, 0 failures
- 作者: 宮下剛輔
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/01/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る