Serverspecに入門してみました。
Serverspceを使用することで、インフラのテストが自動化できます。
単体テストと呼ばれる、サーバにsshして設定値を詳細設計と見比べて、エビデンスを取得するという不毛な作業が不要になります。
仮想サーバにインストールして、試してみました。
今回は、Ansibleで構築したサーバをServerspecでテストしています。
今回のゴール
環境
VagrantでServerspecを実行するサーバとされるサーバの2台を作っておきます。
OSはCentOS7.1で作りました。
[blogcard url=”https://chariosan.com/2018/07/15/ansible_start/”]
もろもろインストール
hostサーバにツールをインストールします。
yum update
[text]
$ sudo yum update
[/text]
gitインストール
[text]
$ sudo yum install git
[/text]
ansibleインストール
[text]
$ sudo yum install ansible
[/text]
rubyのインストール
Serverspecではrubyが必要なため、インストールします。
以下の記事がわかりやすかったです。rubyのバージョンは「2.3.7」を使います。
[blogcard url=”https://qiita.com/NaokiIshimura/items/ff04b6eaa40b33c4bea8″]
serverspecインストール
gemでserverspecを入れます。rakeも必要なので、入れておきます。
[text]
$ gem install rake serverspec
[/text]
フォルダを作成
vagrantの下に以下のフォルダを作っておきます。
[text]
/myproject
├── ansible
└── serverspec
[/text]
ansibleの準備
pingモジュールを使えるとこまで、設定します。
[blogcard url=”https://chariosan.com/2018/07/15/ansible_start/”]
serverspecの準備
severspecフォルダに移動して、serverspec-initを実行します。
色々関連ファイルを作ってくれます。
[text]
$ cd serverspec/
$ serverspec-init
elect OS type:
1) UN*X
2) Windows
Select number: 1
Select a backend type:
1) SSH
2) Exec (local)
Select number: 1
Vagrant instance y/n: n
Input target host name: slave
+ spec/
+ spec/slave/
+ spec/slave/sample_spec.rb
+ spec/spec_helper.rb
+ Rakefile
+ .rspec
[/text]
serverspecテストを書く
デフォルトのテストを削除する
serverspecのフォルダに移動しておきます。
[text]
$ cd ~/myproject/serverspec
[/text]
デフォルトのテストは削除します。
[text]
$ rm spec/slave/sample_spec.rb
[/text]
httpdのインストールの有無のテストを書く
今回は「httpdがインストールされているか確認する」テストを作ります。
[text]
$ vi spec/slave/httpd.rb
————–ここからhttpd.rb————–
require ‘spec_helper’
describe package(‘httpd’) do
it { should be_installed }
end
~
[/text]
テストを実行(失敗)
テストを実行してみます。httpdは入っていないので、失敗するはずです。
[text]
$ rake spec
[/text]
Ansibleでhttpdをインストールする
plabybook作成
playbookを書いていきます。
[text]
$ cd ~/myproject/ansible
$ vi playbook.yaml
————-ここからplaybook.yaml————-
—
– hosts: slave
sudo: yes
tasks:
– name: install httpd
yum: name=httpd state=latest
[/text]
plabybookを実行して、httpdをインストール
playbookを実行する。
[text]
$ ansible-playbook playbook.yaml
[/text]
Severspceで再度テストする
テスト実行(成功)
再度「rake spec」、成功しました!
[text]
$ rake spec
[/text]
まとめ
AnsibleとServerspecを使うことで、構築〜テストまで自動化することができました。
slaveにssh接続しなくてもいいのがとても嬉しいです。
実案件で使えるレベルまで勉強していきたいです。