2009-01-10 9 views
18

Ich habe ein Capistrano-Bereitstellungsrezept, das ich seit einiger Zeit verwende, um meine Web-App zu implementieren und Apache/nginx mit dem Befehl sudo neu zu starten. In letzter Zeit hängt cap deploy ab, wenn ich versuche, diese sudo-Befehle auszuführen. Ich sehe die Ausgabe: "[Sudo] Passwort für" Mit meinem Server-Namen und der Remote-Anmeldung, aber dies ist keine sichere Login-Eingabeaufforderung. Die Cap-Shell wartet nur auf mehr Ausgabe und erlaubt mir nicht, mein Passwort einzugeben, um den Remote-Sudo-Befehl abzuschließen.Capistrano hängt, wenn SUDO-Passwort für eine Ubuntu-Box gefragt wird

Gibt es eine Möglichkeit, dies oder eine anständige Arbeit zu reparieren? Ich wollte die sudo-Passwortabfrage meines Remote-Benutzers für Web-Neustart-Befehle nicht entfernen.

Antwort

32

Dies scheint auch beim Anschluss an CentOS-Maschinen zu passieren. Fügen Sie die folgende Zeile in Ihrer Capistrano deploy-Datei:

default_run_options[:pty] = true 

Auch stellen Sie sicher, dass die sudo Helfer verwenden, anstatt von sudo in dem Laufe der Ausführung direkt Befehle. Zum Beispiel:

# not 
run "sudo chown root:root /etc/my.cnf" 

# but 
sudo "chown root:root /etc/my.cnf" 
+13

'sudo' ist veraltet, so stattdessen sollten Sie tun,' run "# {sudo} chown root: root /etc/my.cnf" ' – axsuul

+0

Oder verwenden Sie' invoke_command' z.B. 'invoke_command" chown root: root /etc/my.cnf ",: via => run_method'. Wobei run_method sudo definiert (oder nicht, abhängig von deinem 'set: use_sudo, true/false') –

2

Die andere Beratung kann gesund sein, aber ich fand, dass ich einmal zu Capistrano aktualisiere weg 2.5.3 das Problem ging. Ich muss sicherstellen, dass ich die Standardversionen der Tools, die mit meinem O/S ausgeliefert wurden, nicht mehr ausführen kann.

+0

' Ich muss sicherstellen, dass ich die Standardversionen der Tools, die mit meinem O/S geliefert wurden, nicht mehr ausführen werde dieser instabile Software-Stack und starten Sie mit Tools, die mit Ihrem OS – hek2mgl

2
# prevent sudo prompting for password 
set :sudo_prompt, "" 
+5

kommt nicht nur Sudo Passwortabfrage verbarg? http://rubydoc.info/github/capistrano/capistrano/master/Capistrano/Configuration/Actions/Invocation#sudo_prompt-instance_method –