web-dev-qa-db-fra.com

Ansible: Sudo sans mot de passe

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!

6
bbkaaka

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.

  1. Pour ce faire, connectez-vous au serveur
  2. Ouvrez le fichier sudoers avec Sudo visudo
  3. Assurez-vous que vous avez une ligne comme celle-ci: centos ALL=(ALL) NOPASSWD:ALL
  4. Remplacez centos par votre utilisateur
  5. Sauvegardez le fichier

Vous 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.

13
Károly Nagy

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.

5
sampi