米GitHub、Puppetによるサーバー設定の自動化を支援する「octocatalog-diff」を公開

 米GitHubがサーバー管理・設定自動化ツール「Puppet」のための変更管理ツール「octocatalog-diff」を公開した。効率よく変更後の状態をプレビューできるという。

 GitHubはインフラストラクチャ設定にPuppetを利用しており、Github.comでは数千のノードをPuppetで管理しているという。設定されているPuppetのロール数は数百にも上り、その設定ファイルは50万行を上回る規模という。

 octocatalog-diffは、ノードの設定を変更した際のテストを行うためのツール。GitHubでは各ノードの設定を変更する際にほかのノードに予期しない影響が出ないよう自動CI(継続的インテグレーション)ツールで変更をテストしているとのことだが、時間がかかるなどの課題を抱えていたという。octocatalog-diffはこの問題を解決するために社内で開発、利用しているツールで、Rubyで実装されている。対応プラットフォームはMac OS XおよびUNIX/Linux。

 開発版と安定版と2つのPuppetカタログをコンパイルして比較できる。まずPuppetエージェントでコマンドラインによりカタログをコンパイルし、PuppetDBまたはAPIを利用してPuppet Masterをクエリする方法でカタログを取得、JSONファイルからカタログを読み込む。

 影響がない属性やリソースは除去して残りの差異を表示するため、効率よく変更を確認できるという。Puppetコードをサーバーに実装して走らせることなく変更後の状態をプレビューできるため、時間短縮につながっていると報告している。

 octocatalog-diffはプロジェクトのWebサイトより入手できる。開発チームによるとoctocatalog-diffは開発過程であり、公開したコードは早期段階であると注意している。

octocatalog-diff
https://github.com/github/octocatalog-diff