Je veux exécuter ansible avec l'utilisateur sa1 sans mot de passe Sudo:
Première fois OK:
[root@centos1 cp]# ansible cent2 -m Shell -a "Sudo yum -y install httpd"
cent2 | SUCCESS | rc=0 >>
Deuxième échec:
[root@centos1 cp]# ansible cent2 -s -m yum -a "name=httpd state=absent"
cent2 | FAILED! => {
"changed": false,
"failed": true,
"module_stderr": "",
"module_stdout": "Sudo: a password is required\r\n",
"msg": "MODULE FAILURE",
"parsed": false
}
Aidez-moi!
Ce n'est pas ansible, c'est la configuration de votre serveur. Assurez-vous que Sudo est autorisé pour l'utilisateur ansible utilise sans mot de passe.
Sudo visudo
centos ALL=(ALL) NOPASSWD:ALL
centos
par votre utilisateurVous pouvez essayer à partir du serveur lui-même en exécutant:
Sudo -u [yourusername] Sudo echo "success"
Si cela fonctionne, cela devrait aussi fonctionner avec ansible.
Par défaut ansible exécute Sudo avec les drapeaux: -H -S -n
pour devenir root. Où --non-interactive
serait la forme longue correspondante pour l'option -n
. Cette option semble obliger Sudo à renvoyer 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 avec le contenu suivant:
[defaults]
Sudo_flags = --set-home --stdin
C'était au moins suffisant pour permettre à pam_ssh_agent_auth.so de s'exécuter et de m'authentifier.