Es ist nicht ansible, es ist die Konfiguration Ihres Servers. Stellen Sie sicher, dass sudo für den Benutzer erlaubt ist, den Ansible ohne Passwort verwendet.
- Dazu melden Sie sich beim Server an
- Öffnen Sie die sudoers-Datei mit
sudo visudo
- Stellen Sie sicher, dass Sie eine Zeile wie diese haben:
centos ALL=(ALL) NOPASSWD:ALL
- Ersetzen Sie
centos
mit Ihrem Benutzer - Speichern Sie die Datei
Sie können es vom Server selbst versuchen, indem Sie Folgendes ausführen:
sudo -u [yourusername] sudo echo "success"
Wenn das funktioniert, sollte es auch von Ansible aus funktionieren.
Standardmäßig führt Ansible sudo mit den Flags aus:-H -S -n
Wurzel werden. Wobei --non-interactive
wäre die entsprechende Langform für Option -n
. Diese Option scheint sudo dazu zu bringen, die Fehlermeldung zurückzugeben, ohne zu versuchen, die Authentifizierungsmodule ihre Arbeit tun zu lassen.
Ich habe es geschafft, den Passwortfehler zu umgehen, indem ich eine ~/.ansible.cfg mit Zeilen wie unten für die relevanteste Ansible-Version erstellt habe.
Ansible 2.4
[defaults]
sudo_flags = --set-home --stdin
Ansible 2.9
[sudo_become_plugin]
flags = -H -S
Das war zumindest genug, damit pam_ssh_agent_auth.so ausgeführt und mich authentifiziert werden konnte.
Vor Version 2.8 funktioniert das obige Beispiel, neuer als 2.8 erfordert das zweite Beispiel. Die Dokumentation für die neue Stilkonfiguration finden Sie im Ansible User Guide.