我在 OS X 10.9.1 上使用 Ruby 2.1 和 Capistrano 3.1,部署到 CentOS 6.5。
在我的目标部署服务器上,我无法以我的部署用户admin@myserver
ssh 登录,但我可以 ssh 作为paul@myserver
然后登录sudo su - admin
。
我做了一个测试任务:
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 -c
或为前缀。sudo su