capistrano-foreman
capistrano-foreman copied to clipboard
Can not input sudo password when run foreman:restart
Hello, I'm using the master branch. When I run foreman:restart
, capistrano will hang when prompting for sudo password.
Should we use foreman_sudo
here?
https://github.com/hyperoslo/capistrano-foreman/blob/master/lib/capistrano/foreman.rb#L28
Hi @yesmeck,
I'm not sure that will help. Capistrano isn't particularly great with input, so I think you will have to configure your sudoers
file so that the command won't prompt for a password (see NOPASSWD
).
Yes, NOPASSWORD
is a solution.
But if I chang this line:
run "sudo service #{options[:app]} start || sudo service #{options[:app]} restart"
to
run "#{foreman_sudo} service #{options[:app]} start || #{foreman_sudo} service #{options[:app]} restart"
and
set :foreman_sudo, "rvmsudo -p 'sudo password: '"
Capistrano also will works.
I have the same problem. In fact, I think you should just use #{sudo} and use the global capistrano sudo setting.
I'd really like to implement this, @mcfiredrill, but I can't find any documentation on a sudo
variable — could you direct me?
@jgorset this?
+1 since upstart supports user jobs and the newer session jobs, you can run upstart jobs without using sudo at all
@ralfthewise erm, user/session jobs only start when a user logs in and starts some sort of x session, no? i don't think upstart iterates all users of the system and loads their jobs...
No, they're just like usual upstart jobs except they run in the context of an unprivileged user. See http://upstart.ubuntu.com/cookbook/#user-job and http://upstart.ubuntu.com/cookbook/#session-job
section Session Job:
[...] Session Jobs are not managed by Upstart running as PID 1 - they are managed by the users own Session Init.
section Session Init:
Traditionally, this job has been handled by applications such as "gnome-session" [...]
and then below in section Non-graphical Sessions:
However, what if you want to use a Session Init on a server? This is not fully supported right now, but can be achieved as follows.
Create two System Job similar to the following...
so, as i understand it, those jobs won't be started upon boot but only when the user actively initiates such a session by, e.g., launching gnome or some other tool which in turn only happens when you login.