From Fedora Project Wiki
(tweaks)
Line 1: Line 1:
= Ansible 4 =
= Ansible 5 =


== Summary ==
== Summary ==


The ansible project has re-organized how they release and distribute ansible. This change moves Fedora in sync with those changes and retires the old 'ansible classic/2.9.x' package in favor of a 'ansible' package that pulls in ansible-core (the engine) and includes all the collections in upstream ansible releases.
The ansible project has re-organized how they release and distribute ansible. This change moves Fedora to be in sync with those changes and retires the old 'ansible classic/2.9.x' package in favor of a 'ansible' package that pulls in ansible-core (the engine) and includes all the collections in upstream ansible releases.


== Owner ==
== Owner ==
Line 9: Line 9:
* Name: [[User:kevin| Kevin Fenzi]] and [[User:dmsimard]]
* Name: [[User:kevin| Kevin Fenzi]] and [[User:dmsimard]]


* Email: kevin@scrye.com, dmsimard@fedoraproject.org
* Email: kevin@scrye.com, dmsimard@redhat.com
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
* FESCo shepherd: [[User:FASAccountName| Shehperd name]] <email address>
* FESCo shepherd: [[User:FASAccountName| Shehperd name]] <email address>
Line 39: Line 39:


== Detailed Description ==
== Detailed Description ==
The upstream ansible project found that maintaining a single monolithic ansible package with everything included was not working well. Small changes had to wait for releases, some areas had no subject matter reviewers, it was difficult to try and handle all the issues and changes in a timely manner. So, the ansible engine was split off and then the rest of the content was moved to separate collections. These collections could then be maintained by communities that care about that area and could release at their own pace. A number of collections have agreed to release on the same cadence. These collections, along with the ansible-core engine comprise a upstream 'ansible' release.  
The upstream ansible project found that maintaining a single monolithic ansible package with everything included was not working well ([https://www.ansible.com/blog/thoughts-on-restructuring-the-ansible-project source]). Small changes had to wait for releases, some areas had no subject matter reviewers, it was difficult to try and handle all the issues and changes in a timely manner. So, the ansible engine was split off and then the rest of the content was moved to separate collections. These collections could then be maintained by communities that care about that area and could release at their own pace. A number of collections have agreed to release on the same cadence. These collections, along with the ansible-core engine comprise a upstream 'ansible' release.


The engine package (ansible-core) is already in Fedora 35+. Currently the 'ansible' package is 'ansible classic', ie, the 2.9.x version from before the reorginization. This version will end of life soon. A number of collections are already packaged as 'ansible-collection-X' in Fedora.
The engine package (ansible-core) is already in Fedora 35+. Currently the 'ansible' package is 'ansible classic', ie, the 2.9.x version from before the reorganization. While Ansible 2.9.x will continue to be maintained from a security perspective until 2022, it is desireable to update to the latest release of both ansible-core and ansible in order to benefit from continued updates, bug fixes and improvements.


This change will modify the existing 'ansible' package to package the collections that are in upstream ansible releases. This package will require: ansible-core (the engine) and install the ansible-collections. Users can, if desired, remove the ansible package (and thus the collections) and install separately packaged ones or install via ansible-galaxy.
This change will modify the existing 'ansible' package to include the Ansible Collections that are provided in the upstream ansible releases from PyPi. The ansible package will not include ansible-core but will have a requirement (dependency) on it.
 
Having two separate packages will give users the ability to select the best option based on their needs:
 
# Install the 'ansible' package to mirror the user experience when installing ansible from PyPi: it will install ansible-core as well as the collections as they are included in the upstream ansible release.
# Install just the 'ansible-core' package when no external collections are necessary
# Install 'ansible-core' and then manually install collections either from existing [https://koji.fedoraproject.org/koji/search?match=glob&type=package&terms=ansible-collection* packages in Fedora], from [https://galaxy.ansible.com/ Ansible Galaxy] or elsewhere.


== Feedback ==
== Feedback ==
Line 50: Line 56:
== Benefit to Fedora ==
== Benefit to Fedora ==


* On current upstream releases with bugfixes and enhancements
* On current upstream releases with bugfixes and enhancements.
* Will allow users to choose to uninstall the release collections and install standalone collections or via galaxy
* Increases flexibility by allowing users to choose which Ansible collections to install and where they install it from.
* More rapid improvements for Fedora users.
* More rapid improvements for Fedora users.


Line 101: Line 107:
== Release Notes ==
== Release Notes ==


Ansible is now shipped as 'ansible-core' (the engine) and a set of ansible-collections. Users can use 'dnf install ansible' to install ansible-core and all the release collections from upstream ansible releases. User can also 'dnf remove ansible-collections-ansible' and install collections from standalone packages or via ansible-galaxy.
Ansible is now shipped as 'ansible-core' (the engine) and a curated set of Ansible collections.
Users can use 'dnf install ansible' to install ansible-core as well as the Ansible collections included in the upstream Ansible releases. Users can also opt to 'dnf install ansible-core' and then install collections manually from standalone packages or via ansible-galaxy.

Revision as of 21:36, 24 September 2021

Ansible 5

Summary

The ansible project has re-organized how they release and distribute ansible. This change moves Fedora to be in sync with those changes and retires the old 'ansible classic/2.9.x' package in favor of a 'ansible' package that pulls in ansible-core (the engine) and includes all the collections in upstream ansible releases.

Owner

  • Email: kevin@scrye.com, dmsimard@redhat.com


Current status

  • Targeted release: Fedora Linux 36
  • Last updated: 2021-09-24
  • FESCo issue: <will be assigned by the Wrangler>
  • Tracker bug: <will be assigned by the Wrangler>
  • Release notes tracker: <will be assigned by the Wrangler>

Detailed Description

The upstream ansible project found that maintaining a single monolithic ansible package with everything included was not working well (source). Small changes had to wait for releases, some areas had no subject matter reviewers, it was difficult to try and handle all the issues and changes in a timely manner. So, the ansible engine was split off and then the rest of the content was moved to separate collections. These collections could then be maintained by communities that care about that area and could release at their own pace. A number of collections have agreed to release on the same cadence. These collections, along with the ansible-core engine comprise a upstream 'ansible' release.

The engine package (ansible-core) is already in Fedora 35+. Currently the 'ansible' package is 'ansible classic', ie, the 2.9.x version from before the reorganization. While Ansible 2.9.x will continue to be maintained from a security perspective until 2022, it is desireable to update to the latest release of both ansible-core and ansible in order to benefit from continued updates, bug fixes and improvements.

This change will modify the existing 'ansible' package to include the Ansible Collections that are provided in the upstream ansible releases from PyPi. The ansible package will not include ansible-core but will have a requirement (dependency) on it.

Having two separate packages will give users the ability to select the best option based on their needs:

  1. Install the 'ansible' package to mirror the user experience when installing ansible from PyPi: it will install ansible-core as well as the collections as they are included in the upstream ansible release.
  2. Install just the 'ansible-core' package when no external collections are necessary
  3. Install 'ansible-core' and then manually install collections either from existing packages in Fedora, from Ansible Galaxy or elsewhere.

Feedback

Benefit to Fedora

  • On current upstream releases with bugfixes and enhancements.
  • Increases flexibility by allowing users to choose which Ansible collections to install and where they install it from.
  • More rapid improvements for Fedora users.

Scope

  • Proposal owners:

'ansible' package needs to be modified for this change (work is in progress already).

  • Other developers: N/A
  • Release engineering: N/A
  • Policies and guidelines:

Possibly policies for packaging collections?

  • Trademark approval: N/A (not needed for this Change
  • Alignment with Objectives: First!

Upgrade/compatibility impact

On upgrade, ansible-2.9.x will be replaced by ansible-core + release collections. Ansible playbooks will continue to run as before.

How To Test

Run playbook with ansible 2.9, upgrade and re-run with ansible-core-2.11.x

User Experience

Users can remove the release collections and install separately packaged collections or install from ansible-galaxy.

Dependencies

Might need to conflict with some seperately packaged collections.

Contingency Plan

  • Contingency mechanism: Keep shipping ansible classic, but it will go EOL and updates will become much harder.
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change)

Documentation

N/A (not a System Wide Change)

Release Notes

Ansible is now shipped as 'ansible-core' (the engine) and a curated set of Ansible collections. Users can use 'dnf install ansible' to install ansible-core as well as the Ansible collections included in the upstream Ansible releases. Users can also opt to 'dnf install ansible-core' and then install collections manually from standalone packages or via ansible-galaxy.