Ce n'est pas possible, c'est la configuration de votre serveur. Assurez-vous que sudo est autorisé pour l'utilisateur qu'ansible utilise sans mot de passe.
- Pour ce faire, connectez-vous au serveur
- Ouvrez le fichier sudoers avec
sudo visudo
- Assurez-vous d'avoir une ligne comme celle-ci :
centos ALL=(ALL) NOPASSWD:ALL
- Remplacer
centos
avec votre utilisateur - Enregistrer le fichier
Vous pouvez essayer depuis le serveur lui-même en exécutant :
sudo -u [yourusername] sudo echo "success"
Si cela fonctionne, cela devrait également fonctionner à partir d'ansible.
Par défaut, ansible exécute sudo avec les drapeaux :-H -S -n
devenir racine. Où --non-interactive
serait la forme longue correspondante pour l'option -n
. Cette option semble faire en sorte que sudo renvoie le message d'erreur, sans tenter de laisser les modules d'authentification faire leur travail.
J'ai réussi à contourner l'erreur de mot de passe en créant un ~/.ansible.cfg contenant les lignes ci-dessous, pour la version ansible la plus pertinente.
ansible 2.4
[defaults]
sudo_flags = --set-home --stdin
ansible 2.9
[sudo_become_plugin]
flags = -H -S
C'était au moins suffisant pour permettre à pam_ssh_agent_auth.so de s'exécuter et de m'authentifier.
Avant la version 2.8, l'exemple ci-dessus fonctionne, plus récent que 2.8 nécessite le deuxième exemple. La documentation de la nouvelle configuration de style se trouve dans le Guide de l'utilisateur Ansible.