2014-01-20 5 views
10

私はマルチステージのマルチサーバ設定をしています。私の仕事ではサーバ名 を使用する必要があります。 stagin.rbに私が持っている:Capistrano 3:タスクでサーバカスタム変数を使用する

set :stage, :staging 
# Define servers 
server 'xxx.xx.xx.xxx', user: 'deploy', roles: %w{app}, name: 'app1' 
server 'xxx.xx.xx.yyy', user: 'deploy', roles: %w{app}, name: 'app2' 

と私は、「名前」変数私の仕事であることを使用したい:

task :configure do 
    on roles(:app), in: :parallel do 
    # how do I get server name here? 
    end 
end 

答えて

15

あなたは、ホスト名/ IPを返すようにしたい場合は、それはなります

task :configure do 
    on roles(:app), in: :parallel do |server| 
    p server.hostname # server hostname should be in here 
    end 
end 

あなたは、この特定のケースでは:nameのように、カスタムプロパティにアクセスしたい場合、それらはserver構成オブジェクトのpropertiesハッシュに格納されています。ちょうどを使用server.hostnameの代わりに

+0

これは実際にはサーバ定義の変数名を "appname"に変更して "puts server.appname"を実行すると "Rake :: Task"の "未定義メソッド 'appname'を取得するとタスクの名前を返します。 " –

+0

@ a.yastreb申し訳ありませんが、私の悪い、間違ったパラメータ。私はヘッドアップのおかげで答えを訂正しました。 – bredikhin

+0

ありがとう!今働く:) –

関連する問題