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: 1
projects:
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 はこちらから入手できます。また、俺が書いたプラグインなんかは、ここに置いてあります。