Capistrano无法进行多个主机部署

mor*_*082 6 capistrano

我在这里不知所措,在淘海之后(阅读:互联网)寻求解决方案,我只剩下其他东西而不是砸堆.任何帮助赞赏.

我在本地运行capistrano,可以部署到几个不同的环境中.(我在Windows 7上,fwiw).一切顺利,直到我需要在单个部署期间部署到多个:app服务器.

通常我打电话时会提示我输入一次密码短语cap deploy.我有ssh-agent运行(git从来没有为我的通行证而烦恼)但是尽管如此,Capistrano在每次部署时都一直在窃听我.无论如何,它在部署到一台主机时始终有效.

现在,当我尝试一次部署到多个服务器时,它会询问我的密码短语看起来多次:

(ME删除了ips)

servers: ["redacted", "redacted"]<br />
Enter passphrase for ~/.ssh/id_rsa: Enter passphrase for ~/.ssh/id_rsa: 
Run Code Online (Sandbox Code Playgroud)

所以上面我输入我的密码,但这不起作用.它等待的时间很少,然后吐出这个错误:

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

这就是结束.

  1. 我可以"无密码"ssh到我正在部署的服务器上.
  2. 我很确定ssh-agent正在运行,因为我每次都可以点击Git w/out输入我的密码
  3. 在cap deploy中使用'forward_agent'设置不起作用.
  4. 这是我的角色:
    role :app, "ip 1 removed", "ip 2 removed"
  5. 如果我设置default_run_options[:max_hosts] = 1,它工作正常,但它要求我为每个我正在部署的主机的每个连接的密码.这最终会很多.

基本上我正在寻找下面的任何一个(但不限于): - "你永远不会在Windows上修复它" - "这是你在capistrano中实现真正的无密码部署" - "你有没有忽略这个设置/特征?" - "我有一块可以修理任何东西的岩石,你可以借用它"

谢谢!

nav*_*n87 0

用户变量设置为什么?从包含 Capfile 的目录运行一个简单的调用命令,该命令应尝试在列出的每个服务器上执行。是否连接成功?

cap invoke COMMAND="echo 'Hello World'"
Run Code Online (Sandbox Code Playgroud)

如果它无法运行,那么您的用户可能与您的 ssh 无密码代理不同。您还可以查看服务器上的 SSH 日志,看看是否可以判断哪个代理实际尝试连接失败。