Я использую Capistrano для нестандартного развертывания приложения, и у меня есть очень большой файл, который я загружаю на несколько серверов через шлюз. Я хотел бы вместо того, чтобы capistrano загружал этот файл с компьютера-развертки на каждый сервер в списке, чтобы загрузить его на сервер шлюза, а затем отсканировать его по локальной сети оттуда (это гораздо быстрее, когда я проверяю его вручную) .
У меня проблемы с поиском способа заставить капистрано сделать это. Я могу использовать что-то вроде:
myservers = find_servers_for_task(current_task)
myservers.each do |server|
run "scp HARDCODED_GATEWAY:/remote/file /local/file", :hosts => server.host
end
Мне не нравятся жестко закодированные шлюзы; Я определил это в роли с именем: шлюз. Есть ли способ извлечь имя хоста из символа: gateway? Я знаю, что в роли может быть несколько серверов, но я был бы рад получить информацию о сервере только для первого сервера в массиве ролей - или последнего; для моих целей в нем всегда будет только один сервер, но какой сервер может измениться.