インフラ

[ServerSpec入門]Ansilbeで構築したサーバをServerspecで自動テストする

Serverspecに入門してみました。
Serverspceを使用することで、インフラのテストが自動化できます。
単体テストと呼ばれる、サーバにsshして設定値を詳細設計と見比べて、エビデンスを取得するという不毛な作業が不要になります。   

仮想サーバにインストールして、試してみました。
今回は、Ansibleで構築したサーバをServerspecでテストしています。

今回のゴール

Ansibleでhttpdをインストールし、Serverspecでhttpdがインストールされているかテストする。

環境

VagrantでServerspecを実行するサーバとされるサーバの2台を作っておきます。
OSはCentOS7.1で作りました。

 

もろもろインストール

hostサーバにツールをインストールします。

yum update

gitインストール

ansibleインストール

rubyのインストール

Serverspecではrubyが必要なため、インストールします。
以下の記事がわかりやすかったです。rubyのバージョンは「2.3.7」を使います。
 

serverspecインストール

gemでserverspecを入れます。rakeも必要なので、入れておきます。

フォルダを作成

vagrantの下に以下のフォルダを作っておきます。

ansibleの準備

pingモジュールを使えるとこまで、設定します。
 

serverspecの準備

severspecフォルダに移動して、serverspec-initを実行します。
色々関連ファイルを作ってくれます。

serverspecテストを書く

デフォルトのテストを削除する

serverspecのフォルダに移動しておきます。

デフォルトのテストは削除します。

httpdのインストールの有無のテストを書く

今回は「httpdがインストールされているか確認する」テストを作ります。

テストを実行(失敗)

テストを実行してみます。httpdは入っていないので、失敗するはずです。

Ansibleでhttpdをインストールする

plabybook作成

playbookを書いていきます。

plabybookを実行して、httpdをインストール

playbookを実行する。

Severspceで再度テストする

テスト実行(成功)

再度「rake spec」、成功しました!

まとめ

AnsibleとServerspecを使うことで、構築〜テストまで自動化することができました。
slaveにssh接続しなくてもいいのがとても嬉しいです。
実案件で使えるレベルまで勉強していきたいです。