Cannot create Docker images using Molecule due to `_api.credentials.errors`
Tom-Kun opened this issue · 1 comments
Issue Type
- Bug report
Molecule and Ansible details
ansible --version
ansible [core 2.14.6]
config file = /home/etba/.ansible.cfg
configured module search path = ['/home/etba/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules', '/usr/lib/python3/dist-packages/ansible/modules', '/home/etba/monitoring-global/ansible/library']
ansible python module location = /home/etba/ansible-7.6.0/lib/python3.10/site-packages/ansible
ansible collection location = /home/etba/.ansible/collections:/usr/share/ansible/collections
executable location = /home/etba/ansible-7.6.0/bin/ansible
python version = 3.10.9 (main, Dec 7 2022, 01:12:00) [GCC 9.4.0] (/home/etba/ansible-7.6.0/bin/python)
jinja version = 3.1.2
libyaml = True
molecule 5.0.1 using python 3.10
ansible:2.14.6
azure:23.4.1 from molecule_plugins
containers:23.4.1 from molecule_plugins requiring collections: ansible.posix>=1.3.0 community.docker>=1.9.1 containers.podman>=1.8.1
delegated:5.0.1 from molecule
docker:23.4.1 from molecule_plugins requiring collections: community.docker>=3.0.2 ansible.posix>=1.4.0
ec2:23.4.1 from molecule_plugins
gce:23.4.1 from molecule_plugins requiring collections: google.cloud>=1.0.2 community.crypto>=1.8.0
podman:23.4.1 from molecule_plugins requiring collections: containers.podman>=1.7.0 ansible.posix>=1.3.0
vagrant:23.4.1 from molecule_plugins
Docker version used is on a WSL2 with a Docker Desktop v.4.19.0 and a Docker Engine version 24.0.2.
Molecule installation method (one of):
- pip using a virtualenv
Ansible installation method (one of):
- pip using a virtualenv
Detail any linters or test runners used:
Desired Behavior
Getting the Docker image build by Ansible using the molecule test
or molecule create
commands with Docker containers up and running.
Actual Behaviour
For some weird reasons, the molecule create
or molecule test
command failed at the Ansible task "Build an Ansible compatible image (new)" with the following error message :
The error was: ansible_collections.community.docker.plugins.module_utils._api.credentials.errors.StoreError: Unexpected OS error "Exec format error", errno=8
The error seems to happend in the following playbook file : $INSTALLATION_MOLECULE_PATH_USING_PIP/lib/python3.10/site-packages/molecule_plugins/docker/playbooks/create.yml
The complete error even with the verbose debug -vvvv
is the following :
"module_stderr": "Traceback (most recent call last):\n File \"/tmp/ansible_community.docker.docker_image_payload_v1a8gthl/ansible_community.docker.docker_image_payload.zip/ansible_collections/community/docker/plugins/module_utils/_api/credentials/store.py\", line 91, in _execute\n File \"/usr/lib/python3.10/subprocess.py\", line 421, in check_output\n return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,\n File \"/usr/lib/python3.10/subprocess.py\", line 503, in run\n with Popen(*popenargs, **kwargs) as process:\n File \"/usr/lib/python3.10/subprocess.py\", line 971, in __init__\n self._execute_child(args, executable, preexec_fn, close_fds,\n File \"/usr/lib/python3.10/subprocess.py\", line 1847, in _execute_child\n raise child_exception_type(errno_num, err_msg, err_filename)\nOSError: [Errno 8] Exec format error: '/usr/bin/docker-credential-desktop.exe'\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/tmp/.ansible/ansible-tmp-1686758528.644757-23166-178765827922751/AnsiballZ_docker_image.py\", line 107, in <module>\n _ansiballz_main()\n File \"/tmp/.ansible/ansible-tmp-1686758528.644757-23166-178765827922751/AnsiballZ_docker_image.py\", line 99, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/tmp/.ansible/ansible-tmp-1686758528.644757-23166-178765827922751/AnsiballZ_docker_image.py\", line 47, in invoke_module\n runpy.run_module(mod_name='ansible_collections.community.docker.plugins.modules.docker_image', init_globals=dict(_module_fqn='ansible_collections.community.docker.plugins.modules.docker_image', _modlib_path=modlib_path),\n File \"/usr/lib/python3.10/runpy.py\", line 224, in run_module\n return _run_module_code(code, init_globals, run_name, mod_spec)\n File \"/usr/lib/python3.10/runpy.py\", line 96, in _run_module_code\n _run_code(code, mod_globals, init_globals,\n File \"/usr/lib/python3.10/runpy.py\", line 86, in _run_code\n exec(code, run_globals)\n File \"/tmp/ansible_community.docker.docker_image_payload_v1a8gthl/ansible_community.docker.docker_image_payload.zip/ansible_collections/community/docker/plugins/modules/docker_image.py\", line 962, in <module>\n File \"/tmp/ansible_community.docker.docker_image_payload_v1a8gthl/ansible_community.docker.docker_image_payload.zip/ansible_collections/community/docker/plugins/modules/docker_image.py\", line 951, in main\n File \"/tmp/ansible_community.docker.docker_image_payload_v1a8gthl/ansible_community.docker.docker_image_payload.zip/ansible_collections/community/docker/plugins/modules/docker_image.py\", line 416, in __init__\n File \"/tmp/ansible_community.docker.docker_image_payload_v1a8gthl/ansible_community.docker.docker_image_payload.zip/ansible_collections/community/docker/plugins/modules/docker_image.py\", line 450, in present\n File \"/tmp/ansible_community.docker.docker_image_payload_v1a8gthl/ansible_community.docker.docker_image_payload.zip/ansible_collections/community/docker/plugins/modules/docker_image.py\", line 760, in build_image\n File \"/tmp/ansible_community.docker.docker_image_payload_v1a8gthl/ansible_community.docker.docker_image_payload.zip/ansible_collections/community/docker/plugins/module_utils/_api/api/client.py\", line 509, in _set_auth_headers\n File \"/tmp/ansible_community.docker.docker_image_payload_v1a8gthl/ansible_community.docker.docker_image_payload.zip/ansible_collections/community/docker/plugins/module_utils/_api/auth.py\", line 299, in get_all_credentials\n File \"/tmp/ansible_community.docker.docker_image_payload_v1a8gthl/ansible_community.docker.docker_image_payload.zip/ansible_collections/community/docker/plugins/module_utils/_api/credentials/store.py\", line 83, in list\n File \"/tmp/ansible_community.docker.docker_image_payload_v1a8gthl/ansible_community.docker.docker_image_payload.zip/ansible_collections/community/docker/plugins/module_utils/_api/credentials/store.py\", line 114, in _execute\nansible_collections.community.docker.plugins.module_utils._api.credentials.errors.StoreError: Unexpected OS error \"Exec format error\", errno=8
Other informations :
molecule.yml
---
dependency:
name: galaxy
driver:
name: docker
scenario:
test_sequence:
- destroy
- dependency
- syntax
- create
- check
- converge
- idempotence
- verify
- destroy
platforms:
# Ubuntu Docker images
- name: ubuntu-bionic
image: ubuntu:bionic
dockerfile: ../Dockerfile.j2
privileged: true
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:rw"
- name: ubuntu-focal
image: ubuntu:focal
dockerfile: ../Dockerfile.j2
privileged: true
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:rw"
command: "/sbin/init"
- name: ubuntu-jammy
image: ubuntu:jammy
dockerfile: ../Dockerfile.j2
privileged: true
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:rw"
command: "/sbin/init"
# Debian Docker images
- name: debian-11
image: debian:11
dockerfile: ../Dockerfile.j2
privileged: true
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:rw"
command: "/sbin/init"
- name: debian-12
image: debian:12
dockerfile: ../Dockerfile.j2
privileged: true
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:rw"
command: "/sbin/init"
provisioner:
name: ansible
config_options:
defaults:
remote_tmp: /tmp/.ansible
playbooks:
converge: converge.yml
verify: verify.yml
Dockerfile.j2
# Molecule managed
{% if item.registry is defined %}
FROM {{ item.registry.url }}/{{ item.image }}
{% else %}
FROM {{ item.image }}
{% endif %}
{% if item.env is defined %}
{% for var, value in item.env.items() %}
{% if value %}
ENV {{ var }} {{ value }}
{% endif %}
{% endfor %}
{% endif %}
RUN \
# Debian/Ubuntu
apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y dbus aptitude bash dirmngr iproute2 python3 python3-apt procps sudo systemd systemd-sysv \
&& apt-get clean; \
Before upgrading the Molecule and the Ansible version it was working perfectly. Maybe there is an issue with a Python conflict packages such as requests
and docker
.
pip freeze
ansible==7.6.0
ansible-compat==3.0.2
ansible-core==2.14.6
ansible-lint==6.16.2
cookiecutter==2.1.1
cryptography==41.0.1
distro==1.8.0
docker==6.1.3
enrich==1.2.7
Jinja2==3.1.2
jinja2-time==0.2.0
molecule==5.0.1
molecule-plugins==23.4.1
netaddr==0.8.0
PyYAML==6.0
requests==2.31.0
urllib3==1.26.16
yamllint==1.32.0
I have no idea what's going on and why this is happening and I'll appreciate some help on the subject. :)
Kind regards,
Tom
You're probably running into microsoft/WSL#8952 when it tries to use a credentials helper since the error is: Exec format error: '/usr/bin/docker-credential-desktop.exe'
. Try the fix mentioned in the issue I linked and see if it will work.