自動化時代のインフラ環境稼動テスト「Serverspec」入門 2

Serverspecテストコード実例の紹介とコード記述の際のポイント

第1回では、Serverspecの概要とテストコードを書くまでの事前準備についてご紹介しました。第2回では、より具体的な環境を例として、実際に即したServerspecのテストコードの書き方をご紹介します。テストコードを記述する際のポイント等をまとめ、テストコードの記述をスムーズに実施できるようにな

池田 大輔

2014年8月22日 3:00

第1回では、Serverspecの概要とテストコードを書くまでの事前準備についてご紹介しました。第2回では、より具体的な環境を例として、実際に即したServerspecのテストコードの書き方をご紹介します。テストコードを記述する際のポイント等をまとめ、テストコードの記述をスムーズに実施できるようになることを目的として解説します。

LAMP構成のシステムのテスト

具体的なシステムとして、LAMP(Linux、Apache HTTP server、MySQL、PHP)構成の環境を想定し、この環境に対するテストコードの一例を紹介します。

LAMPの構成を採るシステムの例として、今回は統合監視ソフトウェアのZabbixを稼働させるための環境を取り上げます。LAMP環境のベースとなるLinuxは、CentOS 6.5を想定しています。

図1: テスト対象環境の概要図

稼働状況のテストとして、大まかに以下の4つの部分に分けて各部分の稼働状況に対するテストコードを見ていきます。

  • OS(Linux)部分
  • Webサーバ(Apache HTTP server)部分
  • DB(MySQL)部分
  • アプリケーション(PHP)部分

今回の例で紹介するServerspecのテストコードでは、次の表に掲載したResourceTypeを利用します。

表1: LAMP構成のテストに利用するリソースタイプResourceType

ResourceType種別 概要 利用可能なMatcherの例
package パッケージがインストールされているかのテストを実施。
rpmやdeb、rubyのgemパッケージに対応。バージョン確認も可能。
be_installed等
service サービスの稼働状況のテストを実施。
稼働状態や初期起動の設定状態の確認が可能。
be_running、be_enabled等
file 指定したファイルの存在確認や権限、所有者の確認、ファイルの中身の確認が可能。 be_file、be_directory、be_owned_by、be_writable等
command 任意のコマンドの実行結果の確認が可能。 return_stdout、return_stderr、return_exit_status等
selinux SELinuxの状態の確認が可能。 be_disabled、be_enforcing、be_permissive
iptables iptablesの設定状態の確認が可能。 have_rule
host ホストの名前解決が可能かどうかの確認やホストに到達可能かどうかの確認が可能。 be_resolvable、be_reachable等
port TCP、UDPのポートの稼働状態の確認が可能。 be_listening
php_config PHPの設定状態の確認が可能。 -

【ポイント】
IPアドレス等、実行対象の環境毎に変わる値については変数として外に出し、テストコードの実行処理部分で変数展開するように書くことで、テストコードの使い回しが行いやすくなります。上記の例では、テストコード内で直接変数を定義してテストコード部分で展開していますが、設定情報だけを別ファイルとして管理することも可能です。その方法については第3回で紹介するTipsの中で解説します。

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る