空前の deploy tool ブームの中いかがお過ごしでしょうか。

http://blog.nomadscafe.jp/archives/000704.html

http://d.hatena.ne.jp/tokuhirom/20060929/1159495175

うちもまだ実運用には入れてないですが、作ってるとこだったりします。
以下のような Plagger マルパクリな YAML で設定します。

プラグインは
  • prepare - 下準備 svn co とか
  • process - サーバの台数分だけループで呼ばれる。rsync とか
  • finalize - 後片付けとかログ出力とか
の3つのフェーズで処理を行います。
運用ツールを作るときに Plagger みたいにプラグイン機構にするってのはいいですね。
後から機能追加するのも楽だし、プラグイン毎にテスト出来るので。
あと、内部で使ってる Net::SSH::Perl がステキです。インストールめんどいですけど。


 global:
   user: hoge
   repository: http://svn.example.com/proj/trunk
   deploy_to: /path/to/proj
   work_dir: /path/to/proj
   svn: /usr/local/bin/svn
   roles:
     web:
       - XXX.XXX.XXX.XXX
     app: 
       - XXX.XXX.XXX.XXX
 tasks:
   setup:
     target: app
     plugins: 
       - module: RemoteExec
         config:
           command: mkdir -m 0755 -p /path/to/cache_dir
   deploy:
     target: app
     plugins:
        - module: SVN::Checkout
        - module: RemoteExec
          config:
            user: root
            command: /usr/local/modperl/bin/modperlctl stop
        - module: Deploy
          config:
        - module: RemoteExec
          config:
            user: root
            command: /usr/local/modperl/bin/modperlctl start
        - module: Notify::Email
          config:
              to: developers@example.com