10

I have the following capistrano 3 task:

desc 'Add root scheduled tasks'
task :root_schedules do
  on roles(:all) do 
    within release_path do
      execute :sudo, :bundle, 'exec whenever -w config/root_schedule.rb -u root'
    end
  end
end

I need this task to run with sudo privileges because I need the scheduled tasks to run with higher privileges. These are backend scheduled server tasks. Problem is that everytime I run this command I get following:

DEBUG [46d3800c]    [sudo] password for [user]

After I type my password and hit enter, it never completes anything. No response at all. Any answers out there?

zquintana
  • 371
  • 2
  • 5
  • 13

2 Answers2

19

I just created a gem for this purpose: sshkit-sudo

  1. Add gem 'sshkit-sudo' to Gemfile
  2. Add require 'sshkit/sudo' to Capfile

Now you can use sudo command in your Capistrano 3 task.

Kentaro Imai
  • 654
  • 6
  • 11
0

Capistrano kinda expects you to have this handled with a sudoers file, link so that password input is not required.

The direct answer to the question is: capistrano probably uses the default non-login, non-interactive shell. Since the shell is non-interactive, that probably explains why user input is ignored. Read more about this here.