Scheinbar gibt es mit Version 2.19.2 einen allgemeinen Fehler in Ansible, oder es hat sich etwas gravierendes geändert, was ich noch nicht ausmachen konnte.
Bei der Ausführung von Playbooks erscheint sporadisch folgender Fehler:

Exception in thread Thread-7 (results_thread_main):
Traceback (most recent call last):
File "/usr/lib/python3.11/threading.py", line 1038, in _bootstrap_inner
self.run()
File "/usr/lib/python3.11/threading.py", line 975, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.11/dist-packages/ansible/plugins/strategy/__init__.py", line 108, in results_thread_main
result = strategy._convert_wire_task_result_to_raw(result)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/ansible/plugins/strategy/__init__.py", line 456, in _convert_wire_task_result_to_raw
found_task = self._queued_task_cache[queue_cache_entry]['task']
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
KeyError: ('localhost', '8ec434a0-f550-4997-2176-00000000002b')
An dieser Stelle bleibt das Playbook hängen und muss mit Strg+c abgebrochen werden:
[ERROR]: Unexpected Exception, this is probably a bug: [Errno 3] Kein passender Prozess gefunden
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/ansible/cli/__init__.py", line 660, in cli_executor
exit_code = cli.run()
^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/ansible/cli/playbook.py", line 153, in run
results = pbex.run()
^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/ansible/executor/playbook_executor.py", line 188, in run
result = self._tqm.run(play=play)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/ansible/executor/task_queue_manager.py", line 344, in run
play_return = strategy.run(iterator, play_context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/ansible/plugins/strategy/linear.py", line 216, in run
results.extend(self._wait_on_pending_results(iterator))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/ansible/plugins/strategy/__init__.py", line 796, in _wait_on_pending_results
time.sleep(C.DEFAULT_INTERNAL_POLL_INTERVAL)
File "/usr/local/lib/python3.11/dist-packages/ansible/executor/process/worker.py", line 110, in _term
os.killpg(self.pid, signum)
ProcessLookupError: [Errno 3] Kein passender Prozess gefunden
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/ansible/cli/__init__.py", line 669, in cli_executor
raise AnsibleError("Unexpected Exception, this is probably a bug.") from ex
ansible.errors.AnsibleError: Unexpected Exception, this is probably a bug: [Errno 3] Kein passender Prozess gefunden
Der Fehler tritt mit Version 2.18.9 nicht auf, andere 2.19.x Versionen habe ich nicht getestet.
Zusätzlich trat der Fehler auch nicht an bestimmten Stellen auf, sondern an unterschiedlichen.
Das sollte man mal beobachten, ein Issue scheint es noch nicht zu geben.
Kommentare
2 Antworten zu „Quicknote: Fehler in Ansible 2.19.2“
@mauri
Auf den ersten Blick könnte dein Fehler durch eine Race Condition in der neuen Task-Queue-Handhabung entstehen (z. B. wenn der Cache-Eintrag für den Task asynchron gelöscht wird, bevor der Result-Thread draufzugreift). Das erklärt die Sporadik und die verschiedenen Auftretensstellen.
Was du probieren könntest:
– Führe Playbooks mit –strategy=free statt linear aus (um zu sehen, ob es strategy-spezifisch ist).
– Forks mal auf 1 setzen (ansible-playbook -f 1) und schauen, ob das Problem damit zusammenhängt.
– Setze ANSIBLE_INTERNAL_POLL_INTERVAL=0.1 (oder höher) in der Env, um Polling zu verlangsamen und Races zu mildern.
– Aktiviere Debug-Logging: ansible-playbook -vvv und suche nach Warnungen vor dem Hang.
Im besten Fall aber:
Öffne einen neuen Issue im Ansible-Repo auf GitHub. Füge deinen Traceback, Ansible-Version (ansible –version), OS/Python-Details und ein minimales Playbook-Beispiel bei.
@Larvitz @mauri@blog.maurix.net Danke für die Tipps! Teste ich sobald die Zeit es wieder zulässt. Ich werde berichten ✌️