2010-04-27 117 views
6

我在這裏不知所措,在爲海洋解決方案(閱讀:互聯網)搜索解決方案之後,我只剩下堆棧了。任何幫助讚賞。Capistrano在多個主機部署中失敗

我有capistrano運行本地部署到幾個不同的環境。 (我在Windows 7上,fwiw)。一切都很好,直到我需要在單個部署期間部署到多個應用程序服務器。

當我撥打cap deploy時,通常會提示輸入我的ssh密碼。我有ssh-agent運行(git從來沒有爲我的傳球而痛苦),但儘管這個Capistrano在每次部署時都會給我一次警告。無論如何,它在部署到一臺主機時總是有效。

現在,當我試圖同時部署到多臺服務器,它要求我的密碼似乎是多次:

(IPS由ME移除)

servers: ["redacted", "redacted"]<br /> 
Enter passphrase for ~/.ssh/id_rsa: Enter passphrase for ~/.ssh/id_rsa: 

因此,與上述我輸入我的密碼,但這不起作用。它等待的小會兒,然後吐出了這個錯誤:

connection failed for: <one of the server ips> (NoMethodError: undefined method `overwrite' for nil:NilClass) 

這就是那結束。

  1. 我可以「無密碼」SSH服務器我部署就好了。
  2. 我很確定ssh-agent正在運行,因爲我可以每次都打Git w/out輸入我的密碼短語
  3. 在cap部署中使用'forward_agent'設置不起作用。
  4. 這是我的角色:
    role :app, "ip 1 removed", "ip 2 removed"
  5. 如果我設置default_run_options[:max_hosts] = 1,它的工作原理確定,但它要求我的密碼短語,其最終被很多每臺主機我部署到..每一個連接。

基本上我尋找任何的下方(但不限於): - 「你永遠不會解決在Windows」 - 「這是你如何得到Capistrano的REAL密碼的部署「 - 」你忽略了這個設置/功能嗎?「 - 「我有一塊石頭可以修補任何東西,你可以借用它」

謝謝!

回答

0

什麼是用戶變量設置爲?使用應該嘗試在列出的每臺服務器上執行的Capfile從目錄運行一個簡單的invoke命令。它是否成功連接?

cap invoke COMMAND="echo 'Hello World'" 

如果不能運行,那麼你的用戶可能與你的ssh無密碼代理不一樣。您還可以查看服務器上的SSH日誌,看看您是否可以知道哪個代理實際嘗試連接失敗。

+0

我有多個階段,所以我會打電話: cap production invoke ... 這樣做會失敗,因爲它會同時爲每個服務器形成密碼(即:我一次被問到密碼,但我是沒有機會4次進入)。 爲單個服務器運行此工作正常,例如: cap prod1調用... 因爲我可以在任何單獨的服務器上成功調用,所以我毫不猶豫地認爲它的用戶變量。 我必須通過VPN連接,我不知道這是否與它有關。 – morris082 2010-06-26 17:57:10

0

我實際上遇到了同樣的問題,並通過提供「default_run_options [:max_hosts] = 1」並使用ssh-agent來緩存我的密碼來糾正它(實際上修補它)。不是一個理想的解決方案,可以肯定的是,核心問題仍然隱藏在表面之下。

+0

正在進行的討論發生在這裏: http://groups.google.com/group/capistrano/browse_thread/thread/d38dee230377b464 – jeyroz 2010-09-29 19:41:24

+1

當我給了我一個漩渦,我必須通過ssh鍵提供每個爲每個命令觸發的命令服務器(總計約佔30)。我確實有ssh-agent,但cap仍然要求。 (與ssh代理關閉它問了兩次) – morris082 2010-09-30 13:53:08

0

您是否嘗試過使用putty-agent存儲ssh密碼?

可能不是直接響應,但你可以安裝msysgit並選擇msysgit完全添加到PATH中,也可以選擇使用putty-agent進行身份驗證。

+0

感謝提醒我這篇文章!我最近聽說windows上的capistrano只支持Putty-agent並嘗試過,但無濟於事。我需要進一步嘗試一下,並在此處進行更新。 – morris082 2010-11-16 13:18:12

+0

剛剛添加了有關msysgit的ssh授權配置信息 – mpapis 2010-11-16 13:22:47

0

我有一個幾乎相同的問題(在Ubuntu 10.04上),除了不是得到錯誤connection failed for...,它只是坐在那裏,什麼都不做,直到我按CTRL + C。

解決方案是通過鍵入ssh-add /path/to/my/private/key手動將我的SSH密鑰添加到我的密鑰環中。它向我詢問我輸入的密碼。然後,我可以運行cap production invoke COMMAND="hostname"cap production deploy,而無需輸入密碼。我們有ssh_options[:forward_agent] = true集。