Collegamento Net :: SSH non riesce da lavoro Resque dentro
-
04-10-2019 - |
Domanda
Ho un app che crea set EC2 istanze - Ho un compito resque che configurare il server (via ssh) una volta che è installato e funzionante:
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
ottengo un errore:
*** (Job{serverbuild} | ServerBuilder | [22]) failed: #<Errno::ECONNREFUSED: Connection refused - connect(2)>
Se eseguo questo da IRB, o dalla mia applicazione Rails, è collega bene. Ogni pensiero?
Soluzione
E 'un problema di temporizzazione - istanze EC2 sono "up" prima che l'accetterà le richieste ssh. Ho salvato l'errore ritentato di nuovo in 20 secondi (fino a 5 volte). ora di lavoro.
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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow