Capistrano 3: использовать пользовательскую переменную сервера в задаче

У меня многоступенчатая многосерверная настройка, и в моей задаче мне нужно использовать имя сервера например в 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'

и я хочу использовать эту переменную "name" в моей задаче:

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

Ответ 1

Если вы хотите вернуть имя хоста /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.