skillup

技術ブログ

Ruby サーバー・ネットワーク

serverspecによるサーバー自動テスト

投稿日:2017年5月11日 更新日:

最近は管理しているサーバーが多いのと、構成管理ツール(Ansible)なんかをちょくちょく使ってますが、ちゃんと入っているかどうかを確認するのはそれなりに大変だったりします。

が、構成管理ツール自体もserverspecというテストツールがあるようでちょっと触ってみました。

公式リンクです。

http://serverspec.org/

前提条件ですが、Vagrantを使っていないと仮定し、別のホストを検証対象とします。検証対象も自分自身もLinuxと仮定します。

インストール方法

公式にも書いてありますが、私は下記のようにインストールしました。

※serverspecそのものよりはrubyが入っていない場合、ruby入れるほうが面倒でしょうね・・

rubyのインストール

serverspecのインストール

次にGemfileというテキストファイルを作ります。

Gemfileですが、どうやらライブラリのバージョン間の依存状態を解消するツールのようです。ここにバージョン記録しておいて、各ライブラリを記述しておくみたいな。

概念としてはphpのcomposer.jsonやJavaのpom.xmlに近いでしょうか。

Gemfileについて調べてみた

BundlerとComposerのinstallとupdateの違い

bundle実行

カレントディレクトリにGemfileがある状態でbundleというコマンドを実行してあげるとGemfileに記述されたライブラリを読み込みます。

phpでいうcomposer install ( or update)に近いです。

ひな形の作成

実際にターゲットのホストのテストができるファイルはまだできていません。必要なライブラリが読み込めた時点で下記コマンドを入力します。

ここで以下のような対話が始まります。

テスト内容

実際にテストされる内容は spec/target_host/sample_spec.rbに記述します。

SSH設定

基本的にはあとは実行するだけですが、SSH鍵認証がとおってないと実行できません。

でログインできるようにSSHの設定をしておきましょう。

Git+SSH鍵認証

テストの実行

あとは下記コマンドで実行します。

私は下記のようなエラーが出ました。

spec_helper.rbに

を追加して、実行し

というメッセージが出てとおりました。

参考リンク

「Serverspec」を使ってサーバー環境を自動テストしよう

【入門】serverspecでSSH経由でリモートホストにspec流す

-Ruby, サーバー・ネットワーク
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

大規模Webサービス技術入門 イントロ

一応WEBサービスを日々改修していますが、データが日々ふえ、大規模なサービスの対処法などを勉強する必要があるため、「大規模サービス技術入門」を少しずつ読んでいこうと思います。 ポイント データはディス …

no image

mod_aliasに関して

同一ドメインでパスによってルートディレクトを分けたい時。 この場合、apacheの設定ファイルをいじることになります。 一般的にはhttpd.confではなく*.confと言った設定ファイルを使い、エ …

no image

正規表現その2

10/28に書いた正規表現に関しての追記です。 Contents1 覚えておきたいメタ文字2 留意点 覚えておきたいメタ文字 よく出るメタ文字の復習です。 メタ文字 メタ文字の説明 [] いずれかの1 …

no image

Route53でのドメイン取得&メール送信に関して

以前、Route53でドメイン取得、メールの送受信などをメモしましたが、Route53でのドメイン登録→メール送信に関してもう一度記しておこうと思います。 Amazon SESについて(Route53 …

no image

PHPMailerに関して(PHPのメール送信)

PHPのMailライブラリに関して。 今までmb_send_mailとかで誤魔化してましたが、以下のようにライブラリで送るケースのサンプル。 https://github.com/umanari145 …