Greetings Ansible Community,
For the 2.10 release of Ansible, we plan to restructure the ansible/ansible repository. The majority of modules and plugins will migrate to collection repositories to better enable the community to build, test, and release modules separately from Ansible releases. This will remove the Core maintainers as a bottleneck to community module and plugin development.
Timeline (subject to change):
- 2020-03-02: we will freeze the devel branch using protected branches, and we will create the temp-2.10-devel branch from devel. This date marks the end of merging non-base plugin/module PRs into ansible/ansible.
- 2020-03-09: we will perform the initial migration against temp-2.10-devel, and we will do our initial testing of the components.
- 2020-03-23: we intend to unfreeze devel and merge temp-2.10-devel back into devel. From that point on, devel for ansible/ansible will be for the ansible-base project only.
Migration details:
- All components of the Ansible project are being evaluated, and tagged for future upstream homes.
- The mapping of content between the current ansible/ansible directory structure and each collection is being maintained via scenario files. The scenario files define what each collection will contain after the migration takes place.
- Everything under _core in the ansible.yml migration scenario file will become Ansible 2.10 (ansible-base).
- Once the migration is run, which will be on or around March 9, 2020, all content will be copied to a temporary location (Ansible Migration GitHub Organization) where it can then be moved to the final location of the content owner’s choosing. All content migrated will then be deleted from the ansible/ansible GitHub repository.
- By the end of March, the current ansible/ansible GitHub repository will only contain the contents of ansible-base (see definition below), only foundational Ansible components. All content will have been migrated.
What will be in Ansible 2.10?
Ansible 2.10 will contain a minimal amount of Core supported modules and plugins, allowing for additional plugins and modules to be installed separately via collections. The proposed contents of ansible-base are listed under _core here:
https://github.com/ansible-community/collection_migration/blob/master/scenarios/nwo/ansible.yml
To test out a pre-release version of ansible-base today, use the following source:
https://github.com/ansible-collection-migration/ansible-base
The pip install ansible-base command will install Ansible 2.10 as described above (not currently available).
The pip install ansible command will install the Ansible Community Distribution (ACD) that includes Ansible 2.10 and all additional module and plugin content via Collections.
Please note that ACD is still currently in development and not available for testing yet at this time.
What does a “migration” of content actually mean?
It effectively means that anything not part of Ansible Base, or Ansible 2.10, will be automatically relocated to an alternate GitHub organization and repository.
How is content “claimed”?
If content isn’t claimed, it will be migrated to the community.general collection and new GitHub repository (see below, “What happens to unclaimed content?”) and subject to all rules and policies of the Community Collection.
Here is the process for claiming content:
- Source content is moved to a GitHub organization and repository of your choosing
- A namespace is ready for use on Ansible Galaxy in order to publish content
- An Ansible Collection is created, built, and published to Ansible Galaxy
- Existing content in the Ansible GitHub repository is flagged for deletion
- BOTMETA is updated to ensure future Ansible community distributions carry the content going forward. Please refer to the Collections Developer Guide (migration section) for details on how to accomplish this.
If certain content isn’t part of Ansible 2.10, how will it get distributed?
Please note that Ansible 2.10 is just one piece of the larger Ansible Community Distribution (ACD) effort in the works. This includes a recombined set of all content similar to previous Ansible releases, but instead pulls content from various upstream repositories to form a final installation of Ansible Base plus Ansible Content. Full details on this effort will be made available soon.
What if I don’t see certain content as part of a scenario file?
It may be that the content has not been merged into the ansible/ansible project on GitHub already and therefore no migration is needed, and therefore no scenario file is needed. If some content is in fact part of Ansible 2.9 and not part of a scenario file, please let us know to ensure the migration goes as expected.
What happens to unclaimed content on March 9, 2020?
Any content in the ansible/ansible project on GitHub that is not claimed and migrated elsewhere will automatically be migrated to the community.general collection under the ansible-collections GitHub organization.
Where do I file issues against Ansible 2.10?
It depends on when you file the issue due to where we are in the migration process:
Before 2020-03-02:
All issues: ansible/ansible project on GitHub
Between 2020-03-02 and 2020-03-23: Please ask. The project repositories will be constantly changing
After 2020-03-23:
ansible-base issues: ansible/ansible project on GitHub
Collections specific issues: ansible-collections/{namespace}.{collection} or in the partner owned GitHub repository
Please note: once content is migrated out of the ansible/ansible repository, any remaining open issues and pull requests will no longer be valid. It will be up to the original reporter to move these to the new GitHub organization and repository. More details to follow closer to the freeze date.
What other details are currently in process and will be detailed in the near future?
Topics such as collection versioning, deprecation, and documentation are being worked on and will be detailed soon. Please refer to the Ansible Collections Community Overview at the following location: https://github.com/ansible-collections/overview/blob/master/README.rst
What if I have more questions?
Please respond to this email or reach out on Freenode IRC in ansible or ansible-devel.