Net :: SSH-Verbindung fehlschlägt von innen resque Job
-
04-10-2019 - |
Frage
Ich habe eine app, dass Sätze EC2-Instanzen erstellt - Ich habe eine resque Aufgabe, die den Server (via ssh) wird konfigurieren, sobald es ist und läuft:
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
Ich erhalte eine Fehlermeldung:
*** (Job{serverbuild} | ServerBuilder | [22]) failed: #<Errno::ECONNREFUSED: Connection refused - connect(2)>
Wenn ich laufen diese von irb, oder von meiner Rails-Anwendung, es ist eine Verbindung herstellt gut. Irgendwelche Gedanken?
Lösung
Es ist ein Timing-Problem - EC2-Instanzen sind „up“, bevor die ssh-Anfragen akzeptieren. Ich rettete der Fehler erneut versucht wieder in 20 Sekunden (bis zu 5-mal). arbeiten jetzt.
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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow