Skip to content

Problem: Semaphore runner does not use correct ansible version in image *--ansible2.16.5 #3005

Closed
@DenisMedeirosBBD

Description

@DenisMedeirosBBD
Contributor

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

self-assigned this
on May 7, 2025
added theissue type on May 7, 2025
fiftin

fiftin commented on May 7, 2025

@fiftin
Collaborator

Confirm. Fixing

fiftin

fiftin commented on May 7, 2025

@fiftin
Collaborator

@DenisMedeirosBBD Let me know if you will have any other troubles with runner in Docker. It is not tested enough.

fiftin

fiftin commented on May 7, 2025

@fiftin
Collaborator

Fixed in 2.14.10.

DenisMedeirosBBD

DenisMedeirosBBD commented on Jun 3, 2025

@DenisMedeirosBBD
ContributorAuthor

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

    Development

    Participants

    @fiftin@DenisMedeirosBBD

    Issue actions

      Problem: Semaphore runner does not use correct ansible version in image *--ansible2.16.5 · Issue #3005 · semaphoreui/semaphore