Ukigumo と serverspec で Puppet の継続的インテグレーション
tokuhirom さんにより開発されている Ukigumo を利用して、Puppet の CI 環境を構築してみた。やってることは以下の通り。
- Puppet マニフェストを Git リポジトリで管理
- Ukigumo Server を立てる
- puppet-lxc-test-box で Puppet マニフェストを流し込むシステムコンテナを必要なロールの分だけ用意
-
自前の Ukigumo クライアントスクリプト
を cron で定期的に走らせ以下を実行
- Puppet マニフェストリポジトリの master ブランチが更新されていたら、git pull して Puppet マニフェストをシステムコンテナに適用し、適用結果を Ukigumo サーバに投げる
- serverspec によるテストをシステムコンテナに対して実行し、結果を Ukigumo サーバに投げる
Ukigumo のトップ画面はこんな感じ。最新の結果一覧が表示されている。
{% img /images/2013/03/ukigumo-top.jpg %}
Puppet マニフェストの適用結果の詳細はこんな感じ。
{% img /images/2013/03/ukigumo-puppet.jpg %}
serverspec によるテスト結果の詳細はこんな感じ。
{% img /images/2013/03/ukigumo-serverspec.jpg %}
結果は Ikachan に投げて IRC で通知してる。
{% img /images/2013/03/ukigumo-irc.jpg %}
これで Puppet マニフェストをガリガリとリファクタリングするための準備が整った。
puppet-lxc-test-box や serverspec をつくったのは、こういうことがやりたかったから、ってなことを社内 IRC に書いたら、 #3分で常松 くんを濡らすことに成功した。
「15:00 mizzy: 最近ブログに書いてたことは、すべてこれへの布石」のカッコイイ感はんぱなくて濡れる
— TSUNEMATSU Shinya (@tnmt) March 27, 2013
Ukigumo もとてもシンプルでいいですね。