【发布时间】:2012-05-25 21:23:50
【问题描述】:
我不希望对通过 Capistrano 远程执行的任何命令使用 sudo。具体来说,当我运行cap deploy:setup 时,我在第一个mkdir 命令期间被要求输入我的sudo 密码。我在 deploy.rb 文件中添加了set :use_sudo, false,但这并没有什么不同。
我从一个相当完整的 deploy.rb 文件开始,但是一旦我开始遇到问题就将其缩减。这是我的最小版本,它仍然显示 use_sudo 没有受到尊重:
# App Definitions
set :domain, '[server-ip]'
role :app, domain
role :web, domain
role :db, domain, :primary => true
set :user, "my_app"
set :use_sudo, false
task :sudo_test do
run "#{try_sudo} whoami"
end
运行 cap sudo_test 会提示我输入我的 sudo 密码。我在这里缺少什么(除了我已经拔掉的头发)?
Google 调查结果
https://groups.google.com/forum/?fromgroups#!topic/capistrano/QNYnvW8obrg
一个有类似问题的人的帖子。线程中没有任何结论/解决方案。
【问题讨论】:
-
#{try_sudo}位是什么?如果你把它拿出来怎么办? -
如果
:use_sudo设置为false,#{try_sudo}应该 sudoize 命令。我将它包含在sudo_test中,因为 capistrano rails 任务也可能使用它,并且很可能是问题的根源。 -
我们在 deploy.rb 文件中使用 'sudo -i
'。 -
还有这个:sudo 'aptitude install -y rsync'
-
如上所述,发帖的最初原因是
cap deploy:setup在我不想要的时候尝试使用 sudo。cap deploy:setup是预烘焙食谱;我不打算修改它。相反,我需要确定为什么选项:use_sudo不起作用。
标签: ruby-on-rails-3 capistrano sudo rvm-capistrano