ruby - 如何使用 Capistrano 3 作为另一个用户进行部署

标签 ruby ssh capistrano sudo sshkit

我在 OS X 10.9.1 上使用 Ruby 2.1 和 Capistrano 3.1,部署到 CentOS 6.5。

在我的目标部署服务器上,我无法以我的部署用户 admin@myserver ssh 登录,但我可以以 paul@myserver 身份 ssh 登录然后 sudo su - 管理员

我做了一个测试任务:

task :sayhello do
  on roles(:app) do
    as "admin" do
      puts capture "whoami"
    end
  end
end

并且按预期工作:

$ cap beta deploy:sayhello 
DEBUG [acaa0e6a] Running /usr/bin/env if ! sudo su admin -c whoami > /dev/null; then echo "You cannot switch to user 'admin' using sudo, please check the sudoers file" 1>&2; false; fi on awse-tweb01.foo.com
DEBUG [acaa0e6a] Command: if ! sudo su admin -c whoami > /dev/null; then echo "You cannot switch to user 'admin' using sudo, please check the sudoers file" 1>&2; false; fi
DEBUG [acaa0e6a] Finished in 6.982 seconds with exit status 0 (successful).
DEBUG [153b980d] Running /usr/bin/env whoami on awse-tweb01.foo.com
DEBUG [153b980d] Command: sudo su admin -c "/usr/bin/env whoami"
DEBUG [153b980d]    admin
DEBUG [153b980d] Finished in 0.535 seconds with exit status 0 (successful).
admin

如何让 Capistrano 以管理员身份运行部署任务? 即在运行命令之前以 sudo su admin -csudo su shell 为前缀。

最佳答案

您需要将 key 添加到管理员用户。您可以将您的公钥添加到您要部署的用户的授权主机。

as() 函数使您可以使用大多数命令的部署登录,但您需要以其他用户身份运行命令。就像在 postgres 用户或其他用户下运行命令一样。当然,这是权限,因此里程可能会有所不同,并且在其他环境中可能会有所不同。

关于ruby - 如何使用 Capistrano 3 作为另一个用户进行部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21560028/

相关文章:

mysql:通过 ssh 未知变量 'login-path=develop'

ruby-on-rails - 重启生产/登台服务器后如何自动运行 Rails-app?

ruby-on-rails - 无法使用 capistrano 部署 rails4 项目。 rbenv : version `2.0.0' is not installed

ruby - 正则表达式用逗号和空格分割字符串,但忽略带连字符的单词?

ruby - 通过 ssh 调用远程命令,使用 Ruby,改进语法?

linux - linuxserver之间的无密码SSH连接要求输入密码

go - 使用 Golang os/exec 执行带有 args 的 ssh 命令会导致退出状态 127

linux - 无法通过 ssh 进入锁定的用户

sql - 如何将嵌套集中的所有记录呈现为真正的 html 树

ruby - 将 ruby​​ 数组中的哈希与其同级数组进行比较