failures←これだけまとめたCSVが欲しいよjsonを利用すれば簡単に作れるよafterフックを使うと変換を自動化できるよこんな感じ↓のファイルが出力されます。今回は実行対象全サーバのサマリだけをまとめた一つのCSVファイルを作成する。Serverspecを複数台に実行する方法はググればたくさん出てくるが、ログをどのように保存するかはあまり見かけない。単純にサーバごとの結果をサーバごとのファイルに書き出すのは、Rakefileでrspec_optsにformatオプションを指定することで簡単に行える。結果を確認する際に全サーバのログを一つ一つ確認する必要があり、意外と手間がかかってしまう。実際に詳細な結果を見る必要があるのは「テストが失敗したサーバ」だけであり、すべて合格したサーバは「すべて合格した」ということだけがわかれば十分なはずである。failuresこの表記だけをまとめた簡易的な結果があれば確認の手間がだいぶ減ることになる。今回もJSONを利用する方法で実現する。全サーバの結果を一つのファイルに出力するため、Serverspec実行時に出力先ファイルを初期化(あるいは作成)しておく必要がある。これを行っておかないと、Serverspecを実行するたびにファイルに追記されていってしまう。(過去のログを取っておくために敢えて追記させてもよいが、その場合はファイル名を実行時刻などのユニークなものにするなどして分けた方がいいと思う)これはServerspec実行時に一度だけ呼ばれるファイルで行えばよいので、Rakefileに以下のように書けばよい。出力先パスの情報はspec_helperでも必要になるため、パスは環境変数に入れておくことにする。実行時刻もわかった方が何かと都合が良いので、ここでファイルに書き出しておく。前回の記事でも記載した通り、JSONは以下のような形式で出力される。failures"}今回はsummaryとsummary_lineを使う。方法も前回と同じく、事前にJSONを加工して出力するシェルスクリプトを作成しておき、spec_helperのafterフックでServerspec実行終了後にそのシェルスクリプトを実行させる。$LAST_EXEC_SUMMARY本当にsummary_lineだけを出力するだけでもよいが、全合格かそうでないかが一目でわかると便利なので、if文の部分で判定を行っている。これを実行すると以下のようなファイルが出力される。failures"上記を見ると、ざっくりと全体の結果がわかって次の行動を考えやすくなる。upLoginユーザーは見つかりませんでした。