diaryこの広告は、90日以上更新していないブログに表示しています。僕は最近インフラ屋さんになりつつあるのでミドルウェアの設定ファイルをどのようにバージョン管理すべきという話をちらほら考えてます。あ、実際に何かを試した訳ではないです。開発したアプリケーションのソースコードをバージョン管理しないというのは今時あり得ないでしょう。バージョン管理ツールに何を使うかは置いといて。一方ではミドルウェアの設定ファイルをバージョン管理している現場は少ないのではないかと思います。少なくとも僕は見たこと無いです。僕自身がアプリ屋経験しか無いのでインフラ屋現場ではひょっとしたら違うのかもしれませんが、ここでは少ないという前提で話を進めます。バージョン管理しないとどうなるかっていうと、例えば「○○サーバをDNSの設定に追加する」とかいうタスクがあってそれを完了したとして、後に振り返って見たときに具体的に何をしたのかわかりませんよね。実はその後も設定ファイルをがんがん編集してたんだけど障害が発覚して実はそれがこのときの作業ミスだったなんてわかりません。以前の状態に戻すなんてこともできません。人間SubversionみたくExcelで管理台帳付ける手もありますが気乗りしませんよね。ちなみにミドルウェアの設定ファイルが何かっていうと、Apacheならhttpd.conf、MySQLならmy.cnf、PostgreSQLならpg_hba.conf、Tomcatならserver.xml、Hadoopならmapred-site.xml、BINDならnamed.conf、NTPならntp.conf、といったものです。これらの設定ファイルの特徴として、ローカルマシンでは編集、動作確認がやりづらくてサーバマシンにsshでログインして編集、動作確認することが多いということがあげられます。アプリケーションのソースコードをローカルではなくてサーバ上で直接編集して動作確認っていうことはやらないと思いますが、ミドルウェアの設定ファイルではそういうことは普通に行われると思います。サーバ上で直接編集するにしても、昔ならRCSでバージョン管理、今ならgit使ったり、あるいは/etc以下の設定ファイルを管理するetckeeperを使う手もあります。現実は面倒だからバージョン管理しない現場が多いでしょう。ファイルを変更する機会がそんなにないならそれでもいいと思います。無理にバージョン管理の仕組みを導入してみんなが混乱したら意味無いですし。実はこういうのはミドルウェアの設定ファイルに限らずシェルスクリプトもそうかなーと思います。ちなみにシェルスクリプトの開発環境の話は下記に書きました。blogバージョン管理の重要性って以下のような感じかなと思います。アプリケーションのソースコード>>シェルスクリプト>>>>>ミドルウェアの設定ファイル今回書いているミドルウェアの設定ファイルの管理については以前下記に書きました。blogこれの元ネタは下記です。見る簡単に言うとSubversionでミドルウェアの設定ファイルをバージョン管理してシンボリックリンクを使ってデプロイするというものです。スマートだと思います。似たような話としてKickstartによって自動インストールするもののバージョン管理の話が下記の4章にあります。見るちなみにこの4章は下記の特集1と同じです。見るこの雑誌でもSubversionを使っています。