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
この記事が気に入ったらサポートをしてみませんか?