2014-01-20 48 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在这种特殊情况下,它们被存储在properties哈希server配置对象:只使用server.properties.name而不是server.hostname

+0

这实际上是返回任务的名称:)如果我将服务器定义中的变量名称更改为“appname”,并尝试“puts server.appname”,我会为

+0

@ a.yastreb对不起,我的坏的,放错地方的参数。我更正了答案,谢谢你的提醒。 – bredikhin

+0

谢谢!现在工作:) –

相关问题