まくおさん,凄い

何十台ものマシンを構築することになったので,ファイル転送のために
まくおさんを入れてみました.
http://lab.klab.org/wiki/Makuosan
コンパイルは簡単です.

> ./configure --prefifx=/usr/local; make
> sudo
# make install

そしてファイルを同期する全てのマシンにインストールし,デーモンとして立ち
上げます.

> /usr/local/sbin/makuosan -b /usr/local/share

ここでは,/usr/local/share以下を共有するとします.
ベースディレクトリということで-bオプションだそうです.

沢山のマシンで立ち上げると,共有対象のマシンリストが見られます.

> /usr/local/bin/msync --members
myhost01    191.168.1.25 (Ver1.3.0)
myhost02    191.168.1.26 (Ver1.3.0)
myhost03    191.168.1.27 (Ver1.3.0)
myhost04    191.168.1.28 (Ver1.3.0)
Total: 4 members

コマンド実行は,メンバーのどのマシン上でも同様の結果が得られます.
例えば,Apacheを全てのマシンにインストールするとします.
設定ファイルをばらまきたくなりました.
マシン固有のものは別ファイルにして,共通部分を共有します.
例えばmyhost02上で,

> mkdir -p /usr/local/share/etc/apache/
> cp /usr/local/apache2/conf/httpd.conf /usr/local/share/etc/apache

まずはドライランで動作を確認します.

> /usr/local/bin/msync -n -r etc/apache/httpd.conf
(dryrun) [update:etc/apache/httpd.conf]

あくまでベースディレクトリ(/usr/local/share)からの相対パスということ
で,etc/apache/httpd.confの絶対パスは/usr/local/share/etc/apache/httpd.confになります.
コマンドを実行するディレクトリの場所にはよりません.

そして-nオプションをはずして実行すると,全てのメンバーマシン上に/usr/local/share/etc/apache/httpd.confがコピーされます.

凄く便利です.

マルチキャストで通信して存在を確認するので,スケールアウトも自動的だそうです.

なので,正確には同期じゃなくて上書きコピーです.--deleteオプションで,全マシンから一度消すことも可能です.

こいつとCapistranoを組み合わせると,便利を超えて人間はジョブ投入のみで全自動化,ができそうです.