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?

Était-ce utile?

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
scroll top