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をイジる予定なので、面白そうな発見があったら、
また載せていきます。
コメント