wie in vielen anderen Beiträgen und Fragen zu lesen ist, kann das Sammeln von Fakten während der Ausführung eines Ansible-Playbooks einige Zeit in Anspruch nehmen und aus verschiedenen Gründen stecken bleiben.
In meinem Fall ist das Verhalten ziemlich seltsam:
Ich habe ein Ansible-Playbook zum Einrichten meiner Server. Alles ist über SSH erreichbar und das Playbook läuft wie erwartet, wenn es nur auf einem Host gleichzeitig ausgeführt wird (unabhängig davon, auf welchem Host). Das Sammeln von Fakten funktioniert wie am Schnürchen und ist in Sekunden erledigt.
Das Problem tritt auf, wenn ich das Playbook auf mehreren Hosts ausführe. Sobald ich in meiner Hosts-Datei mehrere Hosts zur Einrichtung eingebe, dauert das Sammeln von Fakten unendlich lange.
Hat jemand dieses Verhalten auch erlebt und kann mir einige Hinweise zur Lösung dieses Problems geben?
Beim Starten des Playbooks wie
ansible-playbook frontend_rollout.yml -i hosts -K -vvv
Ansible möchte, dass ich wie erwartet das Sudo-Passwort und die SSH-Passphrase eingebe. Wenn ich nach der SSH-Passphrase für jeden Server frage, erscheint die Eingabeaufforderung in einer Zeile, wie unten dargestellt:
Enter passphrase for key '/home/bouldrini/.ssh/ansible_ssh': Enter passphrase for key '/home/bouldrini/.ssh/ansible_ssh':
und ich kann das Passwort für beide Eingabeaufforderungen nur einmal eingeben. Ist das das erwartete Verhalten? Habe ich etwas übersehen?
Antwort1
Für manche Leute könnte es interessant sein, deshalb habe ich die Frage jetzt nicht gelöscht.
Der Grund für die endlose Faktensammlung war das beschriebene Verhalten der SSH-Passphrase-Abfrage.
Ein normaler Mensch würde folgendes Verhalten erwarten:
[Pre fact gathering phase]
- prompt for ssh passphrase for host 1
- input for host 1
- prompt ssh passphrase for host 2
- input for host 2
[fact gathering phase]
ABER wie es tatsächlich war:
[Pre fact gathering phase]
- prompt ssh passphrase for host 1 AND host 2 in buggy output
- input for host 1
[fact gathering phase]
- host 1 fact gathering ok
- waiting for input for host 2 without any prompting
das war wirklich verwirrend.
Ich habe übrigens Ansible 2.8 auf Ubuntu 16.04 mit Python 3.7 verwendet. Ich habe nicht getestet, ob dieser Fehler auch in anderen Softwarekonstellationen auftritt, aber es könnte sein!