質問

EC2インスタンスを作成するアプリがあります - サーバーが稼働していると(SSH経由)サーバーを構成するリックタスクがあります。

    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

エラーが発生します:

*** (Job{serverbuild} | ServerBuilder | [22]) failed: #<Errno::ECONNREFUSED: Connection refused - connect(2)>

これをIRBから、またはRailsアプリから実行すると、問題なく接続されます。何かご意見は?

役に立ちましたか?

解決

これはタイミングの問題です-EC2インスタンスは、SSHリクエストを受け入れる前に「アップ」です。 20秒で再び再度再生されたエラーを救出しました(最大5回)。今働いています。

  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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top