Capistranoのroleのサーバを実行時に決めたい件

一つ前のエントリでCapistranoの↓の事を記載しましたが、
======
-S, –set-before NAME=VALUE  Set a variable before the recipes are loaded.
======
今日は新たな壁に当たりました。
 
roleの対象サーバをcapコマンドの引数に渡して制御したいけど、
-Sで指定してもtaskの中まで行かないと使えないんですよね、、
 
ネットで探しても、タスクごとにroleを振り分けられるんですよ~的なのは
たくさん見つかりましたが、コレっていうのが出てこず。
# Capistranoでは対象のサーバをroleというので指定します。
# 実行するときは↓こんな風に出てくるわけですけど。
# servers: [“hoge1”, “hoge2”, “hoge3”, “hoge4”]
 
そしたら、roleの設定ってtaskの中でも出来るんですね。
 
↓こんな感じでいい感じに実行時に-Sで渡した値によって
対象のサーバを切り替えられるようになりました。
======
task :hoge_role do
 if “#{hoge}” == “aaa” then
  role :hosts, “hoge1″,”hoge2″,”hoge3″,”hoge4”
 elsif “#{hoge}” == “bbb” then
  role :hosts, “hoge5″,”hoge6″,”hoge7″,”hoge8”
~略~
end
======
 

Railsデプロイ
Railsデプロイ

posted with amazlet at 10.05.07
Ezra Zygmuntowicz Bruce A. Tate Clinton Begin
オライリージャパン
売り上げランキング: 278746

コメント

タイトルとURLをコピーしました