【问题标题】:Capistrano 3: use server custom variable in taskCapistrano 3:在任务中使用服务器自定义变量
【发布时间】:2014-01-20 12:16:36
【问题描述】:

我有多阶段多服务器设置,在我的任务中我需要使用服务器名称 例如在 stagin.rb 我有:

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

【问题讨论】:

    标签: ruby capistrano capistrano3


    【解决方案1】:

    如果你想返回主机名/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.properties.name 而不是server.hostname

    【讨论】:

    • 这实际上返回了一个任务的名称 :) 如果我将服务器定义中的变量名称更改为“appname”并尝试“puts server.appname”,我会得到“未定义的方法 'appname' for
    • @a.yastreb 对不起,我的错误,放错了参数。我更正了答案,谢谢提醒。
    猜你喜欢
    • 2011-05-24
    • 1970-01-01
    • 2014-01-20
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    相关资源
    最近更新 更多