Net :: connexion SSH échoue à l'intérieur emploi resque
-
04-10-2019 - |
Question
J'ai une application qui crée des ensembles EC2 instances - j'ai une tâche resque qui configurer le serveur (via ssh) une fois qu'il est en marche:
Net::SSH.start(server.dns_name, 'root', :keys => ['~/.ssh/testkey.pem'], :paranoid => false, :verbose => :debug) do |ssh|
result = ssh.exec!("ls -l")
puts result
end
J'obtiens une erreur:
*** (Job{serverbuild} | ServerBuilder | [22]) failed: #<Errno::ECONNREFUSED: Connection refused - connect(2)>
Si je lance ceci de RIR, ou de mon application rails, il est Connects très bien. Toute pensée?
La solution
Il est un problème de synchronisation - instances EC2 sont « » avant l'acceptera les demandes ssh. Je secouru l'erreur rejugé à nouveau en 20 secondes (jusqu'à 5 fois). travaille maintenant.
begin
Net::SSH.start(server.dns_name.to_s, 'root', :keys => ['/Users/stevebrewer/.ssh/testkey.pem'], :paranoid => false) do |ssh|
result = ssh.exec!("ls -la")
puts result
end
rescue
if(retries < 5)
Resque.enqueue_at(20.seconds.from_now, ServerBuilder, server_id, retries + 1)
end
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow