Description
Issue
Hi team,
We are trying to use Semaphore on our RHEL8 hosts (we are aware about the limitations of the new versions of ansible-core not supporting Python 3.6 anymore). We found out the Semaphore images with the ansible 2.16.x which is the last ansible version to support Python 3.6.
Our setup has only one UI node and one Runner node and although applying the same image tag in both cases, inside of the container, the ansible version is different. For example:
# Define image tag for both UI and Runner.
TAG="v2.14.6-ansible2.16.5"
In UI, the ansible-core version is correct (2.16.14
).
# Check ansible version in UI.
[podman@rhel8 ~]$ podman run -it --rm docker.io/semaphoreui/semaphore:${TAG} bash -c 'ansible --version'
ansible [core 2.16.14]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/semaphore/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /opt/semaphore/apps/ansible/9.4.0/venv/lib/python3.12/site-packages/ansible
ansible collection location = /home/semaphore/.ansible/collections:/usr/share/ansible/collections
executable location = /opt/semaphore/apps/ansible/9.4.0/venv/bin/ansible
python version = 3.12.10 (main, Apr 10 2025, 15:27:01) [GCC 14.2.0] (/opt/semaphore/apps/ansible/9.4.0/venv/bin/python3)
jinja version = 3.1.6
libyaml = True
[podman@rhel8 ~]$
In the runner, the ansible-core version is wrong (2.18.5
).
# Check ansible version in UI.
[podman@rhel8 ~]$ podman run -it --rm docker.io/semaphoreui/runner:${TAG} bash -c 'ansible --version'
ansible [core 2.18.5]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/semaphore/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /opt/semaphore/apps/ansible/11.1.0/venv/lib/python3.12/site-packages/ansible
ansible collection location = /home/semaphore/.ansible/collections:/usr/share/ansible/collections
executable location = /opt/semaphore/apps/ansible/11.1.0/venv/bin/ansible
python version = 3.12.10 (main, Apr 10 2025, 15:27:01) [GCC 14.2.0] (/opt/semaphore/apps/ansible/11.1.0/venv/bin/python3)
jinja version = 3.1.6
libyaml = True
[podman@rhel8 ~]$
We were expecting the runner to be on the same version of the other image.
I can see that the server has the proper version defined here: https://github.com/semaphoreui/semaphore/blob/develop/.github/workflows/release.yml#L112
The builder comes after but I don't think it's setting the ansible version correctly (per the tests above).
Can you guys confirm if this is an issue or it's configured like this on purpose?
Thanks in advance!
Impact
Ansible (task execution)
Installation method
Docker
Database
Postgres
Browser
Chrome
Semaphore Version
v2.14.6-ansible2.16.5
Ansible Version
Logs & errors
No response
Manual installation - system information
No response
Configuration
No response
Additional information
No response
Activity
fiftin commentedon May 7, 2025
Confirm. Fixing
fiftin commentedon May 7, 2025
@DenisMedeirosBBD Let me know if you will have any other troubles with runner in Docker. It is not tested enough.
fiftin commentedon May 7, 2025
Fixed in 2.14.10.
DenisMedeirosBBD commentedon Jun 3, 2025
Hi @fiftin , thanks for making the change and sorry for my delay to reply back to this issue - I was out of work for some time and just returned.
I made some tests with the newer version
2.14.10
(and other newer versions) and it the runner image still has the ansible version 2.18.I noticed you added the version in this commit: bcdb678
But I think the Dockerfile for the runner also needs something similar to the server one, doesn't it? These ones:
https://github.com/semaphoreui/semaphore/blob/develop/deployment/docker/runner/Dockerfile#L76-L77
https://github.com/semaphoreui/semaphore/blob/develop/deployment/docker/server/Dockerfile#L48-L50
I am going to open a PR with the change - hopefully it's as easy as adding the additional arg to the Dockerfile.