如何在不提示输入密码的情况下部署Capistrano?

时间:2012-09-23 23:05:45

标签: ruby-on-rails ruby deployment capistrano

当我在流程结束时的某个时刻运行cap deploy时,我会收到密码提示...

 ** keeping 5 of 6 deployed releases
  * executing "sudo -p 'sudo password: ' rm -rf /opt/deployed_rails_apps/myapp/releases/20120922200242"
    servers: ["myhost.com"]
    [username@myhost.com] executing command
Password:

有没有办法让我完成而不提示我输入密码?

这是我的deploy.rb ...

require "bundler/capistrano"

require "rvm/capistrano"

set :rvm_ruby_string, 'ruby-1.9.3-p194@run_passenger'

set :rvm_type, :user

set :application, 'myapp'

set :repository, 'git@github.com:fakename/myrepository.git'

set :deploy_to, "/opt/deployed_rails_apps/#{application}"

set :scm, "git"
set :branch, "master"

set :deploy_via, :remote_cache

set :keep_releases, 5
after "deploy:update", "deploy:cleanup"

load 'deploy/assets'

role :app, 'username@myhost.com'
role :web, 'username@myhost.com'

namespace :deploy do

  task :start, :roles => :app do
    run "touch #{current_release}/tmp/restart.txt"
  end

  task :stop, :roles => :app do
    # Do nothing.
  end

  desc "Restart Application"
  task :restart, :roles => :app do
    run "touch #{current_release}/tmp/restart.txt"
  end

end

3 个答案:

答案 0 :(得分:5)

假设您的部署用户具有适当的权限而您不需要使用sudo,则可以将:use_sudo设置为false,而Capistrano将不会使用它。

添加

set :use_sudo, false

deploy.rb

答案 1 :(得分:1)

在要部署到的计算机上设置SSH公钥。这不是卡皮斯特拉诺的事情。 Here's one guide。您可以通过快速搜索找到许多其他内容。

答案 2 :(得分:1)

如果您确实需要root权限才能删除/ opt / deployed_rails_apps / myapp / releases /下的文件,那么您可以编辑/ etc / sudoers文件以允许部署用户在没有密码的情况下使用sudo。

但我怀疑@matt使用set :use_sudo, false的答案应该解决你的问题。