# Work with custom module failed after upgrade ansible core 2.15 -\> 2.17

**URL:** <https://forum.ansible.com/t/work-with-custom-module-failed-after-upgrade-ansible-core-2-15-2-17/40944>\
**Category:** Get Help\
**Created:** [March 11, 2025, 12:04pm UTC](https://forum.ansible.com/t/work-with-custom-module-failed-after-upgrade-ansible-core-2-15-2-17/40944 "2025-03-11T12:04:06Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![makar112233](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/makar112233/32/7852_2.png) [@makar112233](https://forum.ansible.com/u/makar112233)\
**Post date:** [March 11, 2025, 12:04pm UTC](https://forum.ansible.com/t/work-with-custom-module-failed-after-upgrade-ansible-core-2-15-2-17/40944/1 "2025-03-11T12:04:06Z")

</div>

Hello.  
I have a custom module, called “cloudninja” which can works with our private cloud and make some tasks.  
When I upgraded in requirements.yml version of ansible-core 2.15 to 2.17, I got an error

```auto
ModuleNotFoundError: No module named 'ansible.module_utils.common.yaml'

```

Full text here:

```auto
[Step 4/11] fatal: [localhost]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last): 
File "/home/ ******* /.ansible/tmp/ansible-tmp-1741550629.2001305-5810-138810944062998/AnsiballZ_cloudninja.py", line 107, in _ansiballz_main()
File "/home/ ******* /.ansible/tmp/ansible-tmp-1741550629.2001305-5810-138810944062998/AnsiballZ_cloudninja.py", line 99, in _ansiballz_main invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
File "/home/ ******* /.ansible/tmp/ansible-tmp-1741550629.2001305-5810-138810944062998/AnsiballZ_cloudninja.py", line 47, in шnvoke_module\runpy.run_module(mod_name='ansible_collections.cloud.openstack.plugins.modules.cloudninja', init_globals=dict(_module_fqn='ansible_collections.cloud.openstack.plugins.modules.cloudninja', _modlib_path=modlib_path),
File "", line 226, in run_module
File "", line 98, in _run_module_code
File "", line 88, in _run_code
File"/opt/TeamCity/temp/buildTmp/ansible_cloud.openstack.cloudninja_payload_oayqdo0i/ansible_cloud.openstack.cloudninja_payload.zip/ansible_collections/cloud/openstack/plugins/modules/cloudninja.py", line 133, in
File "/opt/TeamCity/work/3245234523sdfsdf/ansible/lib64/python3.11/site-packages/ansible/utils/py3compat.py", line 12, in from ansible.utils.display import Display
File "/opt/TeamCity/work/3245234523sdfsdf/ansible/lib64/python3.11/site-packages/ansible/utils/display.py", line 49, in from ansible import constants as C
File "/opt/TeamCity/work/3245234523sdfsdf/ansible/lib64/python3.11/site-packages/ansible/constants.py", line 11, in from ansible.config.manager import ConfigManager
File "/opt/TeamCity/work/3245234523sdfsdf/ansible/lib64/python3.11/site-packages/ansible/config/manager.py", line 20, in from ansible.module_utils.common.yaml import yaml_load
ModuleNotFoundError: No module named 'ansible.module_utils.common.yaml'", 
"module_stdout": ""
"msg": "MODULE FAILURE See stdout/stderr for the exact error", "rc": 1}

```

Part of python code from module looks like:

```auto
from ansible.module_utils.basic import AnsibleModule
from ansible.utils import py3compat
from ansible.errors import AnsibleError
from ansible_collections.cloud.openstack.plugins.module_utils.cloudninja import Cloudninja

```

and worked with Ansible-core until 2.15.  
Dear sirs, could you help me please to solve this error?

---

<div class="post-metadata">

**Author:** ![sivel](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/sivel/32/1198_2.png) [@sivel](https://forum.ansible.com/u/sivel)\
**Post date:** [March 11, 2025, 1:47pm UTC](https://forum.ansible.com/t/work-with-custom-module-failed-after-upgrade-ansible-core-2-15-2-17/40944/2 "2025-03-11T13:47:24Z")

</div>

> [@makar112233](#):
>
> ```auto
> from ansible.utils import py3compat
> from ansible.errors import AnsibleError
> 
> ```

You cannot use those imports within a module.

Modules can only import from `ansible.module_utils` or `module_utils` from a collection.

---

<div class="post-metadata">

**Author:** ![makar112233](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/makar112233/32/7852_2.png) [@makar112233](https://forum.ansible.com/u/makar112233)\
**Post date:** [March 11, 2025, 1:56pm UTC](https://forum.ansible.com/t/work-with-custom-module-failed-after-upgrade-ansible-core-2-15-2-17/40944/3 "2025-03-11T13:56:16Z")

</div>

Dear @sivel could you answer, please, what I need to do with this string?

```auto
from ansible.utils import py3compat

```

Because in a code below this I found usage

```auto
def _get_openstack_connection(cloud):
    os_cloud = py3compat.environ.get("OS_CLOUD", cloud)
    if not os_cloud:
        raise AnsibleError("OpenStack cloud is not defined")

    return openstack.connect(cloud=os_cloud)

```

---

<div class="post-metadata">

**Author:** ![flowerysong](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/flowerysong/32/2305_2.png) [@flowerysong](https://forum.ansible.com/u/flowerysong)\
**Post date:** [March 11, 2025, 3:05pm UTC](https://forum.ansible.com/t/work-with-custom-module-failed-after-upgrade-ansible-core-2-15-2-17/40944/4 "2025-03-11T15:05:49Z")

</div>

ansible-core 2.17 no longer supports Python 2.7 as an execution target, so there’s no point in keeping compatibility hacks in your module. Just use `os.environ` directly.

---

<div class="post-metadata">

**Author:** ![makar112233](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/makar112233/32/7852_2.png) [@makar112233](https://forum.ansible.com/u/makar112233)\
**Post date:** [March 11, 2025, 3:27pm UTC](https://forum.ansible.com/t/work-with-custom-module-failed-after-upgrade-ansible-core-2-15-2-17/40944/5 "2025-03-11T15:27:58Z")

</div>

Thank you for reply.  
I did:

1. Changed  
`from ansible.utils import py3compat`  
to  
`import os`
2. Changed  
`os_cloud = py3compat.environ.get("OS_CLOUD", cloud)`  
to  
`os_cloud = os.environ.get("OS_CLOUD", cloud)`  
and looks like it works.  
@flowerysong@sivel many thanks!

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/ansible/original/1X/1882d9a01da5d8996a862359b0913cc568a39b84.svg) [@system](https://forum.ansible.com/u/system)\
**Post date:** [April 10, 2025, 3:28pm UTC](https://forum.ansible.com/t/work-with-custom-module-failed-after-upgrade-ansible-core-2-15-2-17/40944/6 "2025-04-10T15:28:46Z")

</div>

Closed on April 10, 2025, 3:28pm UTC

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
