オープンソースなシステム自動管理ツール Puppet

第10回 Puppet実践テクニック(その5)

この記事を読むのに必要な時間:およそ 2.5 分

前回に引き続き,Puppetを実践で利用するためのテクニックについて解説します。

Subversionによる設定ファイル/データファイルの管理

筆者が勤める(株)paperboy&co.では,Puppetの設定ファイルやデータファイル(マニフェスト,テンプレート,配布ファイル,モジュール等)をSubversionで管理しています。 Subversionを利用することにより,誰がどの様な変更を行ったかの記録も残るので,変更履歴の追跡や監査,変更のロールバックが可能になります。

今回,弊社においてどのようにPuppetとSubversionを組み合わせて,設定ファイルやデータファイルを管理しているのかをご紹介します。このやり方がベストというわけではありませんが,ご参考になれば幸いです。

Puppetサーバ上でのファイルの配置

Puppetサーバ上では,以下の図のように,/etc/puppet以下に設定ファイルを,/var/puppet/data以下にデータファイルを置いています。データファイルの配置は,第8回 Puppet実践テクニック(その3)で解説した,『データファイルの階層構造』と同じものです。Puppetサーバ上のこの2つのディレクトリには,Subversionで管理しないファイルは置かないようにしています。例えば,証明書用のディレクトリは,デフォルトでは/etc/puppet/sslですが,/var/puppet/ssl に変更しています。

Puppetサーバ上でのファイルの配置

Puppetサーバ上でのファイルの配置

Subversionリポジトリ上でのファイルの配置

Subversionリポジトリ上では,以下のようなファイル配置としています。弊社では複数のサービスを外部に提供しているため,サービスごとに階層をわけています。各サービスディレクトリの下には,trunk,tags,branchesディレクトリがあります。

Subversionリポジトリ上でのファイルの配置

Subversionリポジトリ上でのファイルの配置

設定ファイルやデータファイルの作成,編集,削除などは,trunkディレクトリの下で行います。tagsの下にあるファイルは,基本的には直接触ることはありません。trunkディレクトリの下は,設定ファイル用のconfディレクトリとデータファイル用のdataディレクトリに分かれます。

tagsディレクトリの下には,本番環境へリリースするためのファイルをtrunkからコピーして配置します。弊社ではディレクトリ名にリリース日を入れることによって,特定の日と同じ状態へのロールバックがすぐにできるようにしています。

branchesは,trunkにあるものとまったく異なる設定やマニフェストを試したい,という場合に,実験用のファイルを置くための場所です。

テストフェーズ

弊社ではVMWareにより,テスト用のPuppetクライアントとPuppetサーバをサービスごとに用意しています。

テストフェーズでは,PuppetクライアントとPuppetサーバにPuppetをインストール後,Puppetサーバ上で以下のように,SVNリポジトリから設定ファイルとデータファイルをチェックアウトします。

$ sudo svn co http://svn.local/puppet/serviceA/trunk/conf /etc/puppet
$ sudo svn co http://svn.local/puppet/serviceA/trunk/data /var/puppet/data

チェックアウト後,ファイルの修正や追加,削除を行い,動作を確認します。動作に問題がなければ,以下のように,設定ファイルとデータファイルをコミットします。

$ sudo svn ci /etc/puppet
$ sudo svn ci /var/puppet/data

著者プロフィール

宮下剛輔(みやしたごうすけ)

(株)paperboy&co.技術責任者。 社内ではサーバ周りからアプリケーション開発まで幅広く関わる一方,個人的にはPerlプログラミングを趣味として,サーバ管理用ユニットテストスイート Assurer(アシュラ)をオープンソースで公開したり,CPAN AuthorPlaggerコミッタとして活動している。また,YAPC::Asia 2007 Tokyo等の技術系カンファレンスでスピーカを務めるのも最近の楽しみのひとつ。共著書に『MASHUP++』がある。

URLhttp://mizzy.org/

コメント

コメントの記入