Help us understand the problem. What is going on with this article?

Serverspecことはじめ

More than 3 years have passed since last update.

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)調べたい。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした