RFC: Possibility to use different Ansible/Python versions in Ansible runs

As an user I want to be able to decide which Ansible and Python versions are used when I launch an Ansible job.

Execution Environments would allow me to do this.

I would also like to be able to assign Execution Environments to a host group or to a lifecycle environment.

We have recognized, that a lot of users want to have a special ansible (or even python) version which is used to run ansible.

One idea would be to provide docker/podman images containing ansible/python. These images can than also be transferred to other smart proxys using katello/pulp

Thoughts?

1 Like

Could you expand more on the use cases you see for these when compared to making EE a property of the job being executed via REX?

Managing these as container content makes sense. Is there anything special about EEs that you have encountered that would warrant their own type or interface?

I don’t know how ansible-runner currently plays part of the run process right now, but maybe it is rather easily possible to use ansible-navigator to run the jobs in EEs.

Here right now we are running everything more disconnected via an AWX instance, but maybe this could be even more integrated, to just choose a local mode with ansible-navigator or remote with AWX.

Default EEs are basically already there with awx-ee and creator-ee, but we already built a handful of custom EEs for our needs, so would be great to be able to use these without any change (these are made to run with AWX, and some are even cached inside of a Katello instance which AWX accesses, they are really just container images).
Being able to tell Foreman on the Smart-Proxy basis where (one Smart-Proxy local another one on an AWX instance) and with what image to run these jobs would be an awesome extra.