2009-01-10 13 views
18

J'ai une recette de déploiement capistrano que j'utilise depuis un certain temps pour déployer mon application web, puis redémarrer apache/nginx en utilisant la commande sudo. Le déploiement de cap récemment est suspendu lorsque j'essaie d'exécuter ces commandes sudo. Je vois la sortie: "[sudo] mot de passe pour" Avec mon nom de serveur et la connexion à distance, mais ce n'est pas une invite de connexion sécurisée. L'interpréteur de commandes est suspendu en attente de plus de sortie et ne me permet pas d'entrer mon mot de passe pour terminer la commande sudo distante.Capistrano est suspendu lorsque je demande un mot de passe SUDO à une boîte Ubuntu

Existe-t-il un moyen de résoudre ce problème ou un travail décent? Je ne voulais pas supprimer l'invite de mot de passe sudo de mon utilisateur distant pour les commandes de redémarrage Web.

Répondre

32

Cela semble également se produire lors de la connexion à des machines CentOS. Ajoutez la ligne suivante dans votre fichier deploy Capistrano:

default_run_options[:pty] = true 

Aussi assurez-vous d'utiliser l'aide sudo au lieu d'exécuter sudo dans votre exécuter des commandes directement. Par exemple:

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

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

'sudo' est maintenant dépréciée, donc au lieu que vous devriez faire'Exécuter "# {} sudo chown root: /etc/my.cnf racine"' ' – axsuul

+0

Ou utilisez invoke_command' par exemple 'invoke_command' racine de chown: root /etc/my.cnf ",: via => run_method'. Où run_method définit sudo (ou pas, en fonction de votre 'set: use_sudo, true/false') –

2

L'autre conseil peut être sain, mais j'ai trouvé qu'une fois que j'ai mis à jour à Capistrano 2.5.3 le problème est parti. Je dois m'assurer que j'arrête d'exécuter les versions par défaut des outils fournis avec mon O/S.

+0

' Je dois m'assurer que j'arrête d'exécuter les versions par défaut des outils fournis avec mon O/S. cette pile de logiciels instable et commencer à utiliser les outils fournis avec votre OS – hek2mgl

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

ne cache pas simplement l'invite de mot de passe de sudo? http://rubydoc.info/github/capistrano/capistrano/master/Capistrano/Configuration/Actions/Invocation#sudo_prompt-instance_method –