デプロイツール Archer #0

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