Capistrano se bloque lorsque vous demandez le mot de passe SUDO à une boîte Ubuntu
-
08-07-2019 - |
Question
J'ai une recette de déploiement capistrano que j'utilise depuis un certain temps pour déployer mon application Web, puis redémarrez apache / nginx à l'aide de la commande sudo. Récemment, cap deploy 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. Le shell est en attente de plus de résultats et ne me permet pas de saisir mon mot de passe pour exécuter la commande sudo à distance.
Existe-t-il un moyen de résoudre ce problème ou de trouver 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.
La solution
Cela semble également se produire lors de la connexion à des machines CentOS. Ajoutez la ligne suivante dans votre fichier de déploiement capistrano:
default_run_options[:pty] = true
Veillez également à utiliser l'assistant sudo
au lieu d'exécuter sudo
directement dans vos commandes d'exécution. Par exemple:
# not
run "sudo chown root:root /etc/my.cnf"
# but
sudo "chown root:root /etc/my.cnf"
Autres conseils
L’autre conseil est peut-être judicieux, mais j’ai constaté qu’une fois ma mise à jour vers Capistrano 2.5.3, le problème avait disparu. Je dois m'assurer que j'arrête d'exécuter les versions par défaut des outils fournis avec mon système d'exploitation.
# prevent sudo prompting for password
set :sudo_prompt, ""