Hello,
I am trying to build a new EE with Ansible 2.19.
- Is there a minimal Python version requirement for Ansible 2.19? I couldn’t find one. I need the Azure collection, and aumqp (one of the dependencies) fails to build with Python 3.14, so I’m using Python 3.12 at the moment.
I changed the EE definition to use 2.19:
ansible_core:
package_pip: ansible-core<2.20
(from <2.19). Nothing else changed in the EE definition.
I now get an error ModuleNotFoundError: No module named 'ansible.module_utils.common.sentinel' when running a playbook. Searching for this error gave me zero results, so I have no idea where to start finding out what’s going wrong.
Full stack trace:
Traceback (most recent call last):
File "/tmp/ansible_Testplaybook_payload_csu_j205/ansible_Testplaybook_payload.zip/ansible/module_utils/_internal/_ansiballz/_loader.py", line 35, in run_module
File "/tmp/ansible_Testplaybook_payload_csu_j205/ansible_Testplaybook_payload.zip/ansible/module_utils/_internal/_ansiballz/_loader.py", line 62, in _run_module
File "<frozen runpy>", line 226, in run_module
File "<frozen runpy>", line 98, in _run_module_code
File "<frozen runpy>", line 88, in _run_code
File "/tmp/ansible_Testplaybook_payload_csu_j205/ansible_Testplaybook_payload.zip/ansible/legacy/Testplaybook.py", line 72, in <module>
File "/usr/local/lib/python3.12/site-packages/ansible/errors/__init__.py", line 16, in <module>
from .._internal._errors import _error_utils
File "/usr/local/lib/python3.12/site-packages/ansible/_internal/_errors/_error_utils.py", line 13, in <module>
from ansible.module_utils._internal import _ambient_context, _event_utils, _messages, _traceback
ImportError: cannot import name '_ambient_context' from
'ansible.module_utils._internal'
(/tmp/ansible_Testplaybook_payload_csu_j205/ansible_Testplaybook_payload.zip/ansible/module_utils/_internal/__init__.py)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/runner/.ansible/tmp/ansible-tmp-1768991758.9563625-22-263207363273348/AnsiballZ_Testplaybook.py", line 266, in <module>
_ansiballz_main(
File "/runner/.ansible/tmp/ansible-tmp-1768991758.9563625-22-263207363273348/AnsiballZ_Testplaybook.py", line 260, in _ansiballz_main
invoke_module(zipped_mod, encoded_params)
File "/runner/.ansible/tmp/ansible-tmp-1768991758.9563625-22-263207363273348/AnsiballZ_Testplaybook.py", line 140, in invoke_module
_loader.run_module(
File "/tmp/ansible_Testplaybook_payload_n7ywkp0a/ansible_Testplaybook_payload.zip/ansible/module_utils/_internal/_ansiballz/_loader.py", line 43, in run_module
File "/tmp/ansible_Testplaybook_payload_n7ywkp0a/ansible_Testplaybook_payload.zip/ansible/module_utils/_internal/_ansiballz/_loader.py", line 77, in _handle_exception
File "/tmp/ansible_Testplaybook_payload_n7ywkp0a/ansible_Testplaybook_payload.zip/ansible/module_utils/common/json.py", line 85, in get_module_encoder
File "/tmp/ansible_Testplaybook_payload_n7ywkp0a/ansible_Testplaybook_payload.zip/ansible/module_utils/common/json.py", line 75, in get_encoder
File "/tmp/ansible_Testplaybook_payload_n7ywkp0a/ansible_Testplaybook_payload.zip/ansible/module_utils/_internal/_json/__init__.py", line 18, in get_encoder_decoder
File "/tmp/ansible_Testplaybook_payload_n7ywkp0a/ansible_Testplaybook_payload.zip/ansible/module_utils/_internal/_json/__init__.py", line 39, in get_serialization_module
File "/usr/lib64/python3.12/importlib/__init__.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 999, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "/tmp/ansible_Testplaybook_payload_n7ywkp0a/ansible_Testplaybook_payload.zip/ansible/module_utils/_internal/_json/_profiles/_module_legacy_m2c.py", line 11, in <module>
File "/tmp/ansible_Testplaybook_payload_n7ywkp0a/ansible_Testplaybook_payload.zip/ansible/module_utils/_internal/_json/_profiles/__init__.py", line 268, in __init_subclass__
File "/usr/local/lib/python3.12/site-packages/ansible/_internal/__init__.py", line 15, in get_controller_serialize_map
from ansible._internal._templating import _lazy_containers
File "/usr/local/lib/python3.12/site-packages/ansible/_internal/_templating/_lazy_containers.py", line 21, in <module>
from ansible.utils.sentinel import Sentinel
File "/usr/local/lib/python3.12/site-packages/ansible/utils/sentinel.py", line 8, in <module>
from ansible.module_utils.common.sentinel import Sentinel # pylint: disable=unused-import
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'ansible.module_utils.common.sentinel'
Version info:
ansible-playbook [core 2.19.5]
config file = /runner/project/ansible.cfg
configured module search path = ['/runner/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules', '/runner/project/plugins/modules']
ansible python module location = /usr/local/lib/python3.12/site-packages/ansible
ansible collection location = /runner/requirements_collections:/runner/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/local/bin/ansible-playbook
python version = 3.12.12 (main, Jan 8 2026, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-14)] (/usr/bin/python3.12)
jinja version = 3.1.6
pyyaml version = 6.0.3 (with libyaml v0.2.5)
Using /runner/project/ansible.cfg as config file
Anyone has an idea what might go wrong?