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

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

変化の激しいビジネスに対応するためにシステムやサービスには、これまで以上に迅速な導入や安定した運用が求められるようになってきています。このような要求を満たすために、仮想環境やクラウド環境を基盤として利用し、サーバの構築プロセスや構成管理プロセスの効率化のためにChefPuppetAnsibleといった自動化ツールが活用されるようになってきています。

このように自動処理で手軽にシステムやサービスをセットアップできるようになると、構築時の人為的ミスを防げるようになるなど便利になる反面、内部で実施されている処理が人の手から離れて、把握しづらくなる傾向にあります。また自動化の導入に際しては、システムが意図した状態に作り上げられているのかを確認する作業も重要になってきます。特に大規模で複雑な環境において、この確認作業を手作業で実施することは、高コストの要因となってしまいます。

参考:
ThinkIT 連載「システムを自動構築するためのOSSフレームワーク、Chefを使ってみよう!」
ThinkIT 「第3回 クラウドでの設定管理ツールPuppet」

Serverspecの登場

このような背景から、自動構築した環境が本当に意図した通りにできあがっているかの確認作業を自動的に行えるようにするツールが登場しました。それがこの連載で紹介する「Serverspec」です。

Serverspecの登場以前にも、自動構築プロセスに対して処理に間違いがないかをテストするための方法は存在していました。たとえばChefの場合、以下のような様々なツールを活用してテストが実施できます。

ツール テスト可能なこと
knife cookbook test 記法が間違えてないかの記法チェックツール
foodcritic より適切な記述を支援するための構文チェックツール
chefspec 記述したコードによって意図した処理が実施されるかの事前チェックツール
表1:Chefのテスト関連ツール

これらのテストツールを組み合わせることで、自動構築用に作成したコードが正しく実行されるかどうかを事前に確認してから実行に移せるようになります。しかし、自動化処理の記述内容として正しかったとしても、実行時に何らかの要因により、記述したコードの通りに処理が実行されないといったケースも発生し得ます。

そこで効果を発揮するのが、できあがった環境に対して、その環境が意図した通りの状態で稼働しているかどうかをテストする「Serverspec」です。

参考:
serverspec の論文公開します

Serverspecの概要

Serverspecは宮下剛輔氏によって開発されたサーバの状態をテストするためのフレームワークです。

Serverspec公式サイト

Ruby実装で、RubyのテストフレームワークであるRSpecの書き方に準拠しています。2014/7/14時点での最新バージョンは、1.10.0です。本記事では、Serverspecのバージョン1.10.0 および Serverspecのコアのテスト部分を切り出したSpecinfraについてはバージョン1.20.0を対象に解説します。

Serverspecでできること

Serverspecの利用方法を紹介する前に、Serverspecを利用することでどういったことができるようになるのかをまとめます。

Serverspecでできることは、大きく分けて以下の2つです。

  • 意図した処理が環境に適切に反映されていることを確認
  • 意図していない影響が環境に対して発生していないことを確認

意図した処理が環境に適切に反映されていることを確認

サーバにあるパッケージがインストールされているか、TCPの何番ポートがLISTEN状態になっているか、ファイアウォール設定で、あるIPアドレスからのアクセスが遮断される設定が入っているかなど、意図した設定通りにサーバが稼働しているかどうかを確認することができます。これにより、ChefやAnsible等の自動構築処理に対して、正常に稼働していることを保証できます。

意図していない影響が環境に対して発生していないことを確認

サーバになんらかの変更作業を施した結果、意図しない影響がその他の箇所で発生していないかどうかを確認することもできます。たとえばiptablesの設定を変更した結果、意図せずあるプロセスに接続ができない状態になってしまったなどの状況を確認できます。

TIS株式会社

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

連載バックナンバー

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

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

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

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