id:tokuhirom さん作のデプロイツール Archer を最近使い始めたのですが、これがすげーいいっす。
で、この週末は更に便利に使えるように、Archer 用のプラグイン書いたりしてました。
global: work_dir: /home/miya/work dest_dir: /home/miya/assurer tasks: init: - module: SVN::Diff - module: Confirm config: msg: really update? [y/n] - module: SVN::Update - module: Confirm config: msg: really deploy? [y/n] process: - module: Rsync projects: Assurer: app: - mizzy.org
こんな感じの設定をして、
$ archer.pl Assurer -c assurer.yaml
とか実行すると、
といった動作になります。
Archer 同梱の config.yaml では、svn log, svn up, rsync は Exec::Local プラグインで実行しているのですが、この辺りの記述をできるだけ簡略化したいな、ということで、こういったプラグインをつくってみました。
また、ライブドアテクノロジーセミナーの naoya さんのプレゼン で、Capistrano にはシェルプロンプトを表示して、指定したコマンドを複数のリモートサーバ上で一発で実行できる、という機能があって、これがうらやましかったので、Archer プラグインとして実装してみました。
tasks: init: - module: Shell config: role: app para: 1projects: mizzy.org: app: - www.mizzy.org - svn.mizzy.org - ftp.mizzy.org
といった設定をしやると、以下の様な感じで実行できます。(3つのサーバは実体が同じなので、結果が同じですが。)
$ ./archer.pl -c shell.yaml mizzy.org [info] run hook init [debug] load Archer::Plugin::Shell [info] run Archer::Plugin::Shell shell> uptime [www.mizzy.org] 02:59:34 up 4 days, 3:39, 1 user, load average: 0.21, 0.23, 0.22 [svn.mizzy.org] 02:59:34 up 4 days, 3:39, 1 user, load average: 0.21, 0.23, 0.22 [ftp.mizzy.org] 02:59:34 up 4 days, 3:39, 1 user, load average: 0.21, 0.23, 0.22 shell>
Archer はこちらから入手できます。また、俺が書いたプラグインなんかは、ここに置いてあります。