Problem upgrading to Ansible 2.19

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?

My two cents, as I’m not certain what the problem could be.

As far as i can find, Python >=3.11 works with Ansible 2.19.

My first thought would be that either the module has been deprecated, or that the name has changed over time, but that’s just me guessing.

Module is still available: ansible/lib/ansible/module_utils/common/sentinel.py at devel · ansible/ansible · GitHub

I missed a part of the trace.

The error seems to be in line 72 of my script, which is:
from ansible.errors import AnsibleError

which results in: ImportError: cannot import name ‘_ambient_context’ from ‘ansible.module_utils._internal’