F42 Change Proposal: Ansible 11 (Self-Contained)

:link: Ansible 11

This is a proposed Change for Fedora Linux.
This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee.

Wiki
Announced

:link: Summary

Update to Ansible 11 and Ansible Core 2.18, which no longer supports Python 2.7 and Python 3.6 target nodes, including EL 7 and EL 8 hosts.

:link: Owner

:link: Detailed Description

The premise of the change proposal is simple β€” a major version update from Ansible 9 (ansible) / Ansible Core 2.16 (ansible-core) to Ansible 11 / Ansible Core 2.18. This is being filed as a Change proposal instead of a standard update due to major breaking changes.

Ansible Core 2.18’s minimum supported Python version on target nodes is Python 3.8 - 3.13. This means that Ansible will no longer be able to interact with RHEL 8 hosts (system Python is Python 3.6) or RHEL 7 hosts (system Python is Python 2.7). Ansible Core upstream plans to be more aggressive with dropping support for older Python versions on target nodes in the feature.

Ansible 9, the last release that supports Python 2.7 and Python 3.6 target nodes, will go EOL upstream in November 2024, so we must update to the latest Ansible to continue receiving upstream support.

The collections included in the Ansible 11 package will also receive the usual updates to their latest respective major versions. See the upstream roadmaps linked in the Documentation section for more details about other more minor Ansible Core changes and the release schedules for both Ansible and Ansible Core.

:link: Feedback

(FAQ)

  • What about alternative Python interpreters on RHEL 8? Can Ansible Core 2.18 use those and keep support for RHEL 8?

Kind of. The appstream repository does indeed provide alternative, newer Python interpreter versions, in addition to the default system Python version. Ansible can execute modules on target nodes using an alternative Python interpreter if the ansible_python_interpreter var is set appropriately, but core functionality such as the ansible.builtin.package / ansible.builtin.dnf module require access to system libraries that are only available for the default system Python interpreter. Users are therefore not recommended to update to Ansible Core 2.18 if they still require compatibility with RHEL 8 hosts.

  • Can a compat package with an older Ansible Core version be provided?

Maybe. Ansible Core only adds support for new Python versions in new major releases, not the minor releases in between, even though multiple major release trains receive bugfix/security support at a time. The Ansible Core 2.16 controller in Fedora 41 only works with python3.13 thanks to a downstream patch. Additionally, even with our patches, certain parts of the codebase β€” including the ansible-test sanity tooling used by Ansible Collection developers to lint their code β€” do not work properly with Python versions not officially supported by upstream or its test infrastructure.

If other users are interested in an Ansible Core 2.16 compat package and willing to take primary responsibility for maintenance and forward Python compatibility, please reach out to the Change owners.

:link: Benefit to Fedora

Fedora will have the latest version of Ansible and continue receiving upstream support.

:link: Scope

  • Proposal owners:

    • Update the ansible and ansible-core packages
    • Ensure Ansible Collections packages in Fedora are up to date and compatible with the latest Ansible Core version.
  • Other developers:

    • Ensure Ansible Collections packages in Fedora that are maintained by packagers other than the Change owners are up to date and compatible with the latest Ansible Core version.

:link: Upgrade/compatibility impact

Ansible Core 2.18’s minimum supported Python version on target nodes is Python 3.8 - 3.13. This means that Ansible will no longer be able to interact with RHEL 8 hosts (Python 3.6) or RHEL 7 hosts (Python 2.7).

:link: How To Test

Install the latest ansible/ansible-core packages once they arrive in the Fedora repos and ensure that your existing playbooks and installed collections and roles continue to function.

:link: User Experience

Users will have the latest version of Ansible and Ansible Core.

:link: Dependencies

Ansible Collection packages in Fedora should be tested against the new ansible-core release.

:link: Contingency Plan

  • Contingency mechanism: Revert ansible-core and ansible updates
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change), Yes/No

:link: Documentation

:link: Release Notes

Update to Ansible 11 and Ansible Core 2.18, which no longer supports Python 2.7 and Python 3.6 target nodes, including EL 7 and EL 8 hosts.

Last edited by @amoloney 2024-09-24T10:17:33Z

Last edited by @amoloney 2024-09-24T10:17:33Z

How do you feel about the proposal as written?

  • Strongly in favor
  • In favor, with reservations
  • Neutral
  • Opposed, but could be convinced
  • Strongly opposed
0 voters

If you are in favor but have reservations, or are opposed but something could change your mind, please explain in a reply.

We want everyone to be heard, but many posts repeating the same thing actually makes that harder. If you have something new to say, please say it. If, instead, you find someone has already covered what you’d like to express, please simply give that post a :heart: instead of reiterating. You can even do this by email, by replying with the heart emoji or just β€œ+1”. This will make long topics easier to follow.

Please note that this is an advisory β€œstraw poll” meant to gauge sentiment. It isn’t a vote or a scientific survey. See About the Change Proposals category for more about the Change Process and moderation policy.