LoginSignup
5
5

More than 5 years have passed since last update.

Serverspecことはじめ

Last updated at Posted at 2016-12-13

Serverspecについての簡単なまとめと
EC2上でServerspecをインストールして実行するまでを記述。

Serverspecとは何か

  • サーバの状態をコードにより自動的にテストするツール
  • Rubyで実装されている
  • テストはRSpecで書ける(Server+RSpec=Serverspec)
  • Serverspecをインストールしたサーバ自身をテストするだけでなく、ネットワーク経由(ssh/WinRM)で外部の複数のサーバに対してもテストが可能(以下画像参照)

Serverspecの目的

  • テスト駆動によるインフラのコード開発
  • サーバ構築後の確認作業の自動化
  • 稼働しているサーバの監視
  • サーバの再起動時の状態確認

インストール

  • gemで公開されているので以下のコマンドでインストールできる
sudo gem install serverspec

最初にやること

  • serverspec-init コマンドを実行する

以下例を参考。

ec2-user@serverspec-host$ serverspec-init 
Select OS type:

  1) UN*X
  2) Windows

Select number: 1 # EC2なので1を選択

Select a backend type:

  1) SSH
  2) Exec (local)

Select number: 2 # ローカルで実行するので2を選択
# 以下ファイルができる
 + spec/
 + spec/localhost/
 + spec/localhost/sample_spec.rb
 + spec/spec_helper.rb
 + Rakefile
 + .rspec

生成されたファイルの中にRakefileがある。
Serverspecの実行にはRakefileを読み込む必要があるので
rake をgemでインストール

sudo gem install rake

Apache HTTP Serverを起動する

sudo service httpd start

以下コマンドにて実行

ec2-user@ip-172-31-15-14$ rake spec
/usr/bin/ruby2.0 -I/usr/local/share/ruby/gems/2.0/gems/rspec-support-3.4.0/lib:/usr/local/share/ruby/gems/2.0/gems/rspec-core-3.4.0/lib /usr/local/share/ruby/gems/2.0/gems/rspec-core-3.4.0/exe/rspec --pattern spec/localhost/\*_spec.rb

Port "80"
  should be listening

Finished in 0.01063 seconds (files took 0.30423 seconds to load)
1 example, 0 failures

まとめ

  • RSpecの理解が深まる
  • 副次的な効果として、Serverspecを調べることで知らなかったミドルウェアの使い方を知れる(netstatコマンドとか)
  • CIに組み込んでおけば、EC2で空けちゃいけないポートが空いていないかを確認することに利用できそう。
  • またテストを書いておけばそのサーバがどういった要件を満たしているのかが分かるため便利
  • Serverspecのoreilly本 読む
  • Infratasterも使えそう
    • Serverspecはサーバの内部をテストするのに対して、Infratasterは、外部から見た場合の振る舞いをテストする。もうちょっとアプリケーションよりのテストができるっぽいです。
    • HTTPリクエストの応答が200か確認したり、MySQLへの問い合わせた結果を比較したりなどが確認できる
    • 次はこっち(Infrataster)調べたい。
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5