The Future of Ansible
The introduction of Collections is not the only recent major innovation in Ansible. Until version 2.8, Ansible was offered as one large package. This included a variety of modules developed and maintained by the Ansible community. The introduction of Collections happened as part of the release of version 2.9: a format for easy packaging and distribution of Ansible content. Collections allows you to group modules, playbooks, roles, documentation, etc. together. For example, a separate collection is included for the Foreman Ansible Modules to control orcharhino.
If you install Ansible 2.10 via pip, you get 2 packages:
- ansible-base: ansible-base contains the basic mechanics of Ansible as well as a number of modules and plugins. This is the part that is officially supported by Red Hat.
- general Collection: This contains all modules and plugins that were previously (<2.10) part of the Ansible package. As the name suggests, the collection is maintained and developed by the developer community around the Ansible project.
Collections significantly improved the possibilities for extensions as well as maintenance. The current major version is Ansible 3.0.0. ansible-base is not installed with it, but has become a dependency. Thus, the Ansible package now consists of only over 85 collections maintained by the community and Red Hat partners. 2.10 is the first Ansible version that Red Hat no longer offers directly as an RPM.
The ansible-base package is also not available as an RPM. As was done in the past, this is now the sole responsibility of the maintainers of the respective distributions. If you want to use software that is exclusively maintained by RedHat, it is best to install and use only pure ansible-base/ansible-core.
Since newer versions are no longer available as RPM, there is no way around uninstalling old Ansible versions
Version 3.x is intended as a transitional version. As of version 4.0.0, ansible-base is renamed to ansible-core. The Ansible major releases (e.g. 4.0.0, 5.0.0) are officially scheduled to follow shortly after the releases of the corresponding ansible-core major releases (e.g. 2.11, 2.12). Ansible 4.0.0 will be released in May 2021, with the next major release to follow every 6 months thereafter. Minor version updates should be released every 3 weeks shortly after the associated ansible-core minor version. Minor versions are backward compatible, major updates may require rework.
There are still some open construction sites. Migrating older playbooks to Ansible 3.0.0 may require manual work.
We generally like the increased involvement of the Ansible community and the improved maintenance that the new changes bring.
However, there are also a few issues, for example with the inconsistent versioning of Ansible Metaversion on the one hand and ansible-base or core on the other hand.
Also unresolved is the question of whether Ansible, with its strong focus on collections, will continue to support the use of “pure” external roles in the long term, or whether everything will have to be a collection in the future.
In the long run, it will also become clear whether the community will support the changes or prefer to stick to the “classic” versions.
This post is also available in: German