Serverspecの概要からインストールまで

2014年8月1日(金)
池田 大輔

Serverspecの内部的な仕組み

次に、Serverspecの内部的な仕組みを簡単に紹介します。Serverspecは4つのテスト実施方法に対応しています。

  1. LinuxマシンへのSSH接続を経由したリモート実行
  2. Linuxマシンでのローカル実行
  3. WindowsマシンへのWinRM接続を経由したリモート実行
  4. Windowsマシンでのローカル実行

たとえば、LinuxマシンへのSSH接続を経由したリモート実行のパターンの場合、Serverspecのテストコードを実行する元となるサーバからテスト実行対象のサーバに対してSSH接続し、接続先に対して稼働状況確認用のコマンドを実行します。そしてその結果を、Serverspec実行元のサーバにて正常かどうかを評価するといった仕組みです。

図1:Serverspecの仕組み概要図(クリックで拡大)

このような仕組みとなっているため、テスト実行対象のサーバにはエージェントのような特別なソフトウェアをインストールする必要はありません。Linuxマシンの場合はSSH接続、Windowsマシンの場合はWinRM接続が可能であるだけで利用できます。

より具体的に、テスト実行対象サーバ内での挙動を見てみます。Pythonのパッケージがインストールされているかをテストするコードを実行した時の挙動です。

テスト実行対象サーバがCentOSの場合、テスト実行対象サーバ側のSSH接続のログ(/var/log/secure)には次のような結果が記録されます。

図2: SSHログ(クリックで拡大)

このログをみると、pythonパッケージの存在確認コマンド(/bin/rpm -q python)の実行前に、OSのアーキテクチャの確認やOSの種類・バージョンの確認を実施しているのがわかります。このようにServerspecは、実行対象サーバのOSの種別を判断して自動的にテスト用の実行コマンドを切り替えて処理を行います。OSの種別毎の違いを吸収するコードは、Serverspecと併用するSpecinfraにて実装されています。たとえば、図2でCentOSに対して実行したpythonパッケージのインストール状態を確認するコードをUbuntuに対して行うと、「dpkg-query -f '${Status}' -W python」が実行されます。

Serverspec利用までの流れ

それでは具体的にServerspecの利用方法を紹介します。Serverspecを利用するには以下の作業が必要となります。筆者はServerspec実行元サーバのOSとしてUbuntu 14.04を導入して作業を実施しました。

  作業 実施対象
1 Serverspecのインストール Serverspec実行元サーバ
2 Serverspecの初期化処理 Serverspec実行元サーバ
3 接続設定 Serverspec実行元サーバとテスト実行対象サーバ
4 sudo実行設定 テスト実行対象サーバ(Linuxの場合)
5 テストコードの作成 Serverspec実行元サーバ
6 テスト実行 Serverspec実行元サーバ
表2:Serverspec利用までの作業
TIS株式会社

Twitter : @ike_dai
TIS株式会社OSS推進室所属。社内向けシステムの保守運用業務を経験後、クラウド時代の効率的な統合運用管理をテーマに活動中。特に、OSSを駆使した運用のエコシステム実現を目指し、Zabbix,fluentd,Serverspec,Ansibleなどの導入や検証に取り組む。技術検証成果などを技術ブログ『Tech-Sketch』にて発信中。著書:『Zabbix統合監視徹底活用 - 複雑化・大規模化するインフラの一元管理』

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています