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

zabbixアラートメール

以前、zabbixの基本設定についてこのエントリーでかきました。 今回はzabbixでの何らかの障害が発生した時に、アラートメールを送信したい場合について Contents1 ユーザーの登録&ユーザー …

no image

nginxのデバッグ

今までいろいろと苦しめられてきた(汗)nginxのデバッグについて。 まず任意の文字や変数をログに出すことができます。 Contents1 変数の出力1.1 rewriteデバッグ2 小ネタ 変数の出 …

no image

IaC(Infrastructure as Code)に関して

近年ではインフラ環境もコード化しておいて、コマンドで起動や構築できることが一般的ですね。 ansibleやdockerなどは色々と使っていましたが、実際のインフラ環境では2020年6月現在AWSを使う …

no image

crontab 確認方法

crontabが動かないときに確認すること。 Contents1 cron自体が動いているか(下記コマンドでログを確認)2 実行権限が正しいか3 プログラム内部のファイルパスが絶対パスになっているか4 …

no image

サーバー設定ファイルについて nginx

最近はwebサーバーのシェアとしてnginxが徐々に伸びてきていますね。 先日apacheについて解説をしましたが、nginxについて書きたいと思います。 Contents1 設定ファイル2 参考リン …