一つ前のエントリで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 ======