ども、cloudpackかっぱ (@inokara) です。

はじめに

Amazon で予約注文しようとした矢先に作者の @gosukenator さんより Serverspec 本をご恵贈頂きましたので三日間神棚にお供えした後に拝読いたしました。
Serverspec 本を読みました!: 本表示

表紙の鳥は「エトロフウミスズメ」という名前だそうです。オス、メスともに額にカラフルな羽を持っていることが特徴とのことです。残念ながら額に羽(髪)が残り少ない自分ですが Serverspec 本を読ませて頂いた感想等を稚拙な文章力で大変お恥ずかしい限りですが纏めてみたいと思います。

尚、自分と Serverspec の関わりは業務で手 conf または Chef で構築した環境に対して、手順書やレシピ通りに環境が構築されているかをテストする為に利用している「ユーザー」としての関わり程度となります。

感想等

全体を通して

約 200 ページという分量が日頃本を読まない自分にとっては読み切れるか心配になりましたが、Web 上のドキュメントを読んだこともあってか当初の心配はよそに読み切ることが出来ました。

  • 一章 Serverspec の紹介
  • 二章 初めての Serverspec
  • 三章 Serverspec の本格利用
  • 四章 Serverspec 内部の詳細
  • 五章 他ツールとの連携
  • 六章 トラブルシューティングとデバッグ
  • 七章 Serverspec の今後
  • 付録A リソースタイプリファレンス
  • 付録B Serverspec/Specinfra V2 での変更点
  • 付録C Specinfra の Serverspec 以外の利用例
  • 付録D Windows のテスト
  • 付録E Serverspec を活用する為に参考となる書籍や雑誌

尚、上記のような章立てになっており、それぞれの章で Serverspec の紹介、Serverspec の使い方、Serverspec をより使い込んでいく為に必要な情報の解説、Serverspec と他のツールとの連携、トラブルシューティングについて触れられています。

Serverspec が生まれた経緯

第一章で Assurer と呼ばれる Serverspec の原型となるツールから Serverspec が生まれるまで、そして Serverspec の哲学が mizzy さんの言葉で語られています。詳細については実際に手に取って(購入して頂いて)読んでいただければと思いますが、以下の言葉が印象的でした。

  • 多機能で複雑なツールは自分で作ったものですら使わない
  • 一つのことをシンプルにちゃんとやる(という UNIX の哲学)
  • 敷居を低く
  • あくまでもテスト駆動インフラ開発の促進する為(自分の使い方はあくまでも構築した後の確認として利用している)
  • 特定の構成管理ツールに依存しない
  • はやめのリリース、しょっちゅうリリース

「一つのことをちゃんとやる」出来てないなあ…と色々と反省。

Serverspec を拡張する為のバイブルとして

第二章、三章で Serverspec のセットアップから実際にリモートホストを対象に基本的なテストを行う手順と Rspec の記法や複数のホストを対象する際の tips、テストを書く際の観点について触れられており、Serverspec の中核をなす Specinfra がどのように OS の違い等を抽象化しているかが触れられています。これだけでも Serverspec や Specinfra の魅力を感じ取ることが出来ますが、第四章となり Serverspec の深部に迫ります。

第四章の冒頭に掲げられている Serverspec のアーキテクチャ図は普段からプログラムとは無縁な自分でも Serverspec と Specinfra との関係がとてもわかり易かったです。続いて Serverspec が Specinfra と連携してどのように動作しているかを Pry を利用しつつ詳しく解説されています。自分のスキルだとこの章を読み解くには 100 回程読み返す必要がありそうですが、普段から Serverspec を拡張されていたり、Chef 等の構成管理ツールを使いこなしている方はサクサク読み進められると思います。また、章の最後には Serverspec にプルリクエストを送る際の作法で纏められています。

また、六章ではトラブルシュートやデバッグ方法が解説されており、四章と六章はリファレンスとして常に手が届くところにほしいと思いました。

(シンプルだからこそ)他のツールとの連携

第五章で他のツールとの連携について紹介されています。Vagrant との連携はよく知られていますが(自分は Vagrant を殆ど使ってません…すいません)、Sensu や Nagios 等との連携を行うことで監視ツールとしての側面も垣間見えます。CI ツールと連携しての構成管理ツールの継続的メンテナンス、consul や aws-sdk と連携した上でテスト対象を自動的に生成する tips やテストを書く為の補助ツールとして vim や Emacs のプラグインを紹介されています。また、Specinfra を利用した Itamae は非常に興味深いツールだと思います。このようにアイデア次第で色々なツールと連携出来る、連携し易いのは Serverspec の思想の一つである「シンプル」であるが故ではないかなと感じました。

尚、五章で紹介されている consul や aws-sdk との連携については後日試してみたいと考えています。

これからの Serverspec

七章ではこれからの Serverspec について語られています。別言語での実装はあるのか等、Serverspec がどのように進化していくかを垣間見れると思います。また、「Serverspec は今後も必要か?」という問いに @gosukenator さん自身がどのように考えられているかは…実際に本を手に取って(購入されて)ご覧下さい。

最後に

伊藤直也さんがまえがきを書かれており、その中で「物事を知るためには背景を知ることが大切」とあります。今回、この本を通して Serverspec の生まれた経緯や @gosukenator さんの Servrespec に対する思いを作者自身の言葉によって知ることが出来きました。自分が Serverspec に対して思っていた内容について違いがあったりして反省すると共に今日からの業務にフィードバックしたいと思いました。

そして、Serverspec 自体の内容とは離れますが「謝辞」にあるレビューアーの澤登さんや松本さんに対する謝辞と共にご家族への謝辞で

きっと夫が、父がこの本を書き上げた意義について理解し、誇りに思ってくれるものと信じています

という締めの言葉にジーンとしてしまいました。

自分が Serverspec の開発にユーザーとして以外で貢献出来ていないのは残念ではありますが、これからも Serverspec や Chef 等のツールと共に進化していきたいと思いました。また、今回、このような機会を与えてくださった作者の @gosukenator さんには大変感謝しております。ありがとうございました!そして、執筆大変お疲れ様でした!

元記事はこちらです。
Serverspec 本を読みました!