こんにちは! JQです。
前回は『Amazon EC2編~ENI~』ということで、EC2でENIを試してみました。
今回は『Amazon OSS編~Serverspecパート①~』と題して、Serverspecを触ってみたいと思います。
Serverspecとは
Rspecを利用したサーバの状態管理のテストツールになります。
詳細はこちら
それでは実際に試してみましょう。
環境構築
インストール
1.先ずはgemからServerspecをインストールします。
1 |
# gem install serverspec |
雛形の作成
2.次に適当なディレクトリで下記コマンドを実行します。
ローカルをテストしてみる為、Execを選択します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# serverspec-init Select a backend type: 1) SSH 2) Exec (local) Select number: 2 + spec/ + spec/localhost/ + spec/localhost/httpd_spec.rb + spec/spec_helper.rb + Rakefile |
サンプルファイルの確認
3.サンプルファイルを確認してみます。
チェック内容は以下になります。
・httpdがインストールされているか
・自動起動が設定されているか
・起動しているか
・設定ファイルのチェックが存在するか
・設定ファイルのServerNameがlocalhostか
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# cat spec/localhost/httpd_spec.rb require 'spec_helper' describe package('httpd') do it { should be_installed } end describe service('httpd') do it { should be_enabled } it { should be_running } end describe port(80) do it { should be_listening } end describe file('/etc/httpd/conf/httpd.conf') do it { should be_file } it { should contain "ServerName localhost" } end |
実行
4.yumでインストールだけを行い、実際に試してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# rake spec /usr/local/bin/ruby -S rspec spec/localhost/httpd_spec.rb .FFF.F Failures: 1) Service "httpd" Failure/Error: it { should be_enabled } chkconfig --list httpd | grep 3:on expected #<Serverspec::Type::Service:0x007f1b72a95120 @name="httpd"> to be enabled # ./spec/localhost/httpd_spec.rb:8:in `block (2 levels) in <top (required)>' 2) Service "httpd" Failure/Error: it { should be_running } ps aux | grep -w -- httpd | grep -qv grep expected #<Serverspec::Type::Service:0x007f1b72a95120 @name="httpd"> to be running # ./spec/localhost/httpd_spec.rb:9:in `block (2 levels) in <top (required)>' 3) Port "80" Failure/Error: it { should be_listening } netstat -tunl | grep -- :80\ expected #<Serverspec::Type::Port:0x007f1b72a98870 @name=80> to be listening # ./spec/localhost/httpd_spec.rb:13:in `block (2 levels) in <top (required)>' 4) File "/etc/httpd/conf/httpd.conf" Failure/Error: it { should contain "ServerName localhost" } grep -q -- ServerName\ localhost /etc/httpd/conf/httpd.conf expected #<Serverspec::Type::File:0x007f1b72aa2cf8 @name="/etc/httpd/conf/httpd.conf"> to contain "ServerName localhost" # ./spec/localhost/httpd_spec.rb:18:in `block (2 levels) in <top (required)>' Finished in 0.58765 seconds 6 examples, 4 failures Failed examples: rspec ./spec/localhost/httpd_spec.rb:8 # Service "httpd" rspec ./spec/localhost/httpd_spec.rb:9 # Service "httpd" rspec ./spec/localhost/httpd_spec.rb:13 # Port "80" rspec ./spec/localhost/httpd_spec.rb:18 # File "/etc/httpd/conf/httpd.conf" rake aborted! /usr/local/bin/ruby -S rspec spec/localhost/httpd_spec.rb failed Tasks: TOP => spec (See full trace by running task with --trace) |
6個中4個がエラーとして出力されています。
サーバを修正して再度実行してみます。
1 2 3 4 5 6 |
# rake spec /usr/local/bin/ruby -S rspec spec/localhost/httpd_spec.rb ...... Finished in 0.16844 seconds 6 examples, 0 failures |
エラーがなく、設定が成功している事がわかります。
いかがでしたでしょうか?
次回は『Amazon OSS編~Serverspecパート②~』ということで、SSHでのチェックをしてみたいと思います。
お楽しみに!
——————————————————————————————————
ナレコムクラウドのFacebookに『いいね!』をクリックして頂くと
最新のお役立ちレシピが配信されます★
┏━━━━━━━━━━━━━┓
┃ナレコムクラウド Facebook┃
┗━━━━━━━━━━━━━┛
——————————————————————————————————