Capistrano自体はレシピファイルの中でRubyでゴリゴリ書けそうな気配ですが、 出来る限りスッキリさせたいもので。 自分が担当しているシステムは何十台も並べて~的な感じで、 群構成にしているのですが、xxだったらxxみたいなのがかったるいな、と。 ということで、今回はCapistranoを使って、以下の方針でやることにしました。 1. アプリケーション(Webアプリ/検索用アプリ/バッチアプリ)によってCapfileを分ける 2. それぞれのアプリの中で使う変数をコマンドラインから渡す 非常に簡単で、cap --help すれば出てくるのですが、 上記1.は↓の-fでファイルを指定します。 -f, --file FILE A recipe file to load. May be given more than once. 上記2.は↓の-Sで変数を指定します。 -S, --set-before NAME=VALUE Set a variable before the recipes are loaded. 実際には↓のようなコマンドラインになります。 cap -f web_app_deploy.rb -S cluster_no=1 deploy レシピファイルの中身は↓ザックリこんな感じです。 他にも監視止めたりとかあーだこーだあるのですが、その辺は割愛。 (まだ書いてないだけっていう話もあるw) 出来るだけ細かく分割しておけば、他でも使いまわせそうな予感がします。 ======= task :backup do run "cpでバックアップ。パスに#{cluster_no}を使います。" end task :stop do run "ミドルウエア停止用のスクリプト" end task :remove do run "rmでゴミ掃除して" end task :put do run "cpで所定の場所にアプリを置きます。#{cluster_no}な名前のファイル" end task :start do run "ミドルウエア起動用のスクリプト" end task :deploy do backup stop remove put start end ======= 明日もCapistranoをイジる予定なので、面白そうな発見があったら、 また載せていきます。