Hi there ![]()
When looking at the table of supported versions of Python on the target nodes in Ansible over at Ansible-core | endoflife.date I see a pattern that is slightly concerning to me.
While I really like the fact that Ansible is very much alive and under heavy development, as a sysadmin I see a concerning pattern when looking at the versions of Python required by the clients/targets for the automation.
A while ago, when Ansible 2.17 was released, we also ran into this issue, where the Core team decided to drop Python 3.6. Some of us voiced concerns about dropping a python version for a (big) OS that is still around for another 3,5 years. Also see the discussions here (ansible-core 2.17 removing target support for Python 2.7 and 3.6 Ā· Issue #54 Ā· ansible-collections/news-for-maintainers Ā· GitHub) and here (Discussion: ansible-core 2.17 removing target support for Python 2.7 and 3.6 Ā· ansible-collections/news-for-maintainers Ā· Discussion #55 Ā· GitHub)
At the time, this was inconvenient at best, because there was still a broad support of community based collections and we (in our RHEL8 environment) have been running with Ansible 2.16 quite happily ever since, getting patches via Red Hat etc.
Which brings us to the current state, for some usecases we use community code for which there is no certified alternative, but we also have environments that use non-Red Hat EL8). And the current state of things is much less peachy, as we currently see breakage because the collections follow (mostly) whatever requirements ansible-core ādemandsā on the controller/client. Which is how itās supposed to be, no argument there.
But, to get back to the point, the pattern I see is that every new release (which comes fast) seems to drop the lowest version of Python on the target compared to the previous version. If this pattern continues itās not too farfetched to think that by the time Python 3.15 hits the streets, the next release of Ansible will drop EL9. Six (6) years before EL9 is slated for end of maintenance (not even mentioning ELS).
So I have some questions:
- What is the current plan of the Core team on the supported requirements on the targets?
- What recourse do we, the sysadmins that have to keep systems running, have in case this does change on the Ansible side? What reasonable expectations can we have that the āmagic glueā we use to connect āeverything and the kitchen sinkā¢ā will keep supporting the systems weāll need to run for years to come without resorting to all kinds of hacks that fix compatibility
- Same goes for the collection maintainers, some of the OS-es (Proxmox, based on Debian for example) donāt move as fast as Python does. What do we do when we have a collection that cannot support the new
ansible-corebecause the target $thing does not work with that version of Python?
I get that using all of the new fancy Python features is cool and itās nice to keep the spectrum of supported versions to a minimum, but again, my primary job is a sysadmin and I have to use Ansible on whatever systems I encounter. And I am not always in the position to ādemandā certain OS versions. Or the other way around, Red Hat releases their OS-es with a specific Python version as /usr/libexec/platform-python with the intention for it to be the stable interface for other system modules (be it Ansible or otherwise) that will not change during the lifecycle of the OS.
TL;DR, I fear that Ansible is chasing new Python versions so fast that it might become irrelevant because it cannot target nothing because the target does not run a supported version of Python.