AWS備忘録7~serverspec~

EC2の環境構築も区切りがついたので、serverspecで簡単なテストをしてみたいと思います。

serverspecのインストール

まずvar配下に新しくディレクトリを作ります。

$ sudo mkdir -p /var/serverspec

作成したディレクトリに移り、bundle initをするとエラーが出ます。ディレクトリの権限がrootになっているので、ec2-userに変更します。

$ sudo chown -R ec2-user:ec2-user .

改めて以下のコマンドを実行します。

$ bundle init

実行されるとGemfileが作成されるので、vimで編集します。rakeコマンドも使うので、serverspecと一緒に追加します。

gem 'serverspec'
gem 'rake'

gemをインストールします。

bundle install

インストールするとserverspec-initが使えるようになるので、実行します。

bundle exec serverspec-init

今回はUN*XとExec(local)を選択します。

Select OS type:

 1) UN*X
 2) Windows

Select number: 1

Select a backend type:

 1) SSH
 2) Exec (local)

Select number: 2

+ spec/
+ spec/localhost/
+ spec/localhost/sample_spec.rb
+ spec/spec_helper.rb
+ Rakefile
+ .rspec

テストの実行

spec / localhost / sample_spec.rbにサーバのテストが記載されています。
内容は以下のようになっています。

require 'spec_helper'

describe package('httpd'), :if => os[:family] == 'redhat' do
 it { should be_installed }
end

describe package('apache2'), :if => os[:family] == 'ubuntu' do
 it { should be_installed }
end

describe service('httpd'), :if => os[:family] == 'redhat' do
 it { should be_enabled }
 it { should be_running }
end

describe service('apache2'), :if => os[:family] == 'ubuntu' do
 it { should be_enabled }
 it { should be_running }
end

describe service('org.apache.httpd'), :if => os[:family] == 'darwin' do
 it { should be_enabled }
 it { should be_running }
end

describe port(80) do
 it { should be_listening }
end

2行目のテストを以下のように書き換えます。

describe package('nginx'), :if => os[:family] == 'amazon' do
 it { should be_installed }
end

テストの実行をします。以下のコマンドで実行できます。

$ bundle exec rake spec:localhost

2つのテストが成功しました。

Package "nginx"
 is expected to be installed

Port "80"
 is expected to be listening

Finished in 0.04708 seconds (files took 0.69702 seconds to load)
2 examples, 0 failures

この記事が気に入ったらサポートをしてみませんか?