Serverspecは、Serverspec Operationsの宮下剛輔氏が開発した、サーバ環境の稼働状況や設定の自動テストを行う製品である。テストスクリプトの制御にはRubyのテストフレームワーク製品であるRSpecを使用している。
2013年3月30日にVer 0.1.0としてリリースされ、2016年6月時点の最新バージョンは2016年5月20日にリリースされたVer 2.36.0である。ライセンスはMIT Licenseとなっており、Linuxに加えてWindows OSにも対応している。
製品のコンセプトや効果については、「serverspec: 宣言的記述でサーバの状態をテスト可能な汎用性の高いテストフレームワーク」という学術論文として公開されている。さらに、作者の宮下氏が自ら執筆したServerspecの技術解説書もオライリーから出版されている。
Serverspecは管理サーバ側にのみインストール作業が必要で、ノード側には前述のssh接続と特権ユーザーの利用の設定以外には特にインストールは不要である。インストールの手順は以下となる。
2016年5月現在、CentOSの標準リポジトリではVer 2.0.0がインストールされる。Rubyとしては最新のstable版ではないが、Serverspecの動作には問題はない。
$ sudo yum install -y ruby
$ sudo gem install Serverspec rake
Infratasterと競合するファイルが存在するため、Serverspec用の作業フォルダを作成する。テストスクリプトなども当該フォルダ以下で作成する。
$ mkdir ~/serverspec $ cd ~/serverspec
テスト対象ノードのテストスクリプト用のフォルダと、サンプルテストスクリプトを対話型形式で作成する。
$ /usr/local/bin/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 Vagrant instance y/n: n Input target host name: tissvv096 + spec/ + spec/tissvv096/ + spec/tissvv096/sample_spec.rb + spec/spec_helper.rb + Rakefile + .rspec
以下のコマンドで、サンプルテストスクリプトが実行される。このスクリプトではApache(httpd)の起動と自動起動の設定、および80ポートが解放されているかのテストが実行される。サンプルスクリプトは管理サーバからテスト対象のノードへの接続試験としても使用できるので、Apache(httpd)がインストールされていなくても実行しておきたい。
$ rake spec
実行結果は以下の形で出力される。
/usr/bin/ruby -I/usr/local/share/gems/gems/rspec-core-3.4.4/lib:/usr/local/share/gems/gems/rspec-support-3.4.1/lib /usr/local/share/gems/gems/rspec-core-3.4.4/exe/rspec --pattern spec/tissvv096/\*_spec.rb Package "httpd" should be installed Service "httpd" should be enabled should be running Port "80" should be listening Finished in 0.07167 seconds (files took 0.35307 seconds to load) 4 examples, 0 failures ( date; time rake spec; date ) | tee Serverspec.log
以上でServerspecのインストールと最初の動作確認は終了である。
Copyright © ITmedia, Inc. All Rights Reserved.