去年の明け頃からAnsibleを使い出して、去年の春ごろから仕事でも充分使えると判断して、今はサーバを構築するのは全てAnsibleでPlaybookを書いて構築→保守という流れが確立しています。とはいえ、他社と共同管理であるサーバも多く、構築完了から時間が経過した後に最初に書いたPlaybookを実行して、Playbookに反映されていない変更が巻き戻るという管理上の問題がありました。`ansible-playbook --check`での検査で何故かChangedになるタスクがあったり(これは僕の書き方が悪いのかも)して、テスト目的ではServerspecを使う事を検討し、実際に使ってみる事にしました。
結論としては、Serverspecは充分使えると判断してAnsible Playbookで実行した内容のテストをServerspecで記述して、構築完了後〜何か変更を加えるときに毎回`rake`を実行するという形が合理的であるとの解を得ました。
となると次は、ディレクトリ名からホスト名を得るServerspecにAnsibleのインベントリファイルを読込んで、対象とするホスト定義を共通化したいと思いました。最終的な目的は、Ansibleのインベントリファイルのみでホスト定義をしてServerspecもそれを読み、AnsibleのBest Practicesに従ったディレクトリ構造の中にServerspecのテストコード用ファイルを入れる事で、それを達成する為にRakefileを改造しました。