Capistrano, межсетевые экраны и туннель
Мы используем Capistrano для автоматизации отправки новых версий PHP-приложений на рабочий сервер. Рабочий сервер (назовем его производственным) является общедоступным, а наш сервер репозитория (назовем его репозитарием) находится за нашим корпоративным брандмауэром вместе с нашими собственными машинами.
Capistrano, настроенный по умолчанию, не будет работать, поскольку производство не может общаться с репо.
Мне было интересно, смогу ли я когда-нибудь настроить capistrano на SSH для репо, а затем SSH на производство, открыв туннель через порт, который я затем смогу использовать для SSH с производства обратно на репо, чтобы получить изменения из SCM.
Я просто не могу понять, как это настроить или найти лучшее решение. Идеи?
Редактировать:
Я пробовал это:
role :web, "deploy.com"
namespace :deploy do
task :remote_tunnel do
run 'Creating SSH tunnel...' do |channel, stream, data|
ssh = channel.connection
ssh.forward.remote(22, 'server.com', 10000, '127.0.0.1')
ssh.loop {!ssh.forward.active_remotes.include?([10000, '127.0.0.1'])}
end
end
end
before "deploy:update_code", "deploy:remote_tunnel"
Но я продолжаю получать эту ошибку:
failed: "sh -c 'Creating SSH tunnel...'" on deploy.com