Ansible 3.0.0 was released yesterday (18.02.2021) and marks an important milestone for the Ansible project. 3.0.0 marks the end of the Ansible restructuring process and sets a mark for future content deliveries of Ansible.
Of course there is more to the release and I will explain some major improvements in this article.
Ansible 3.0.0 Package
In the past, you just installed Ansible and that's it. With 3.0.0 a lot has changed. Ansible now is a bundle/package of collections and tools. This may sound a bit weird, but let me explain with a diagram.
So, as you can (hopefully) see, there will be a lot of transition. With the release of Ansible 4.0.0 (roadmap here) everything should be settled. Ansible 4.0.0 will then consist of these artifacts:
Ansible Core / Ansible Base
This is the foundation of Ansible, including the CLI tools like ansible-playbook, ansible, ansible-test, etc. For Ansible 3.x.x, you will see ansible-base 2.10.5+ included. With the release of Ansible Base 2.11, it will be renamed to Ansible Core, which will be part of Ansible 4.0.0.
Ansible Community Collections
These are collections, directly maintained from the Ansible Community Developers. Most existing modules, filters and plugins will be here and a lot will be added. You can find the changelog for the Ansible Community Collections 3.0.0 here.
Everybody has the option to provide collections on their own. These collections can include roles, plugins, filters, modules and much more and provide these as a bundle.
With Ansible 3.0.0, the Ansible Project introduced a new release cycle. It is planned to have a MINOR release ~ 3 weeks (3.1.0, 3.2.0) and a MAJOR release ~ 2 times per year (4.0.0, 5.0.0). We will see how these plans work out and what to expect from these releases.
Changing to Semantic Versioning seems like a minor step, but it allows various indications of the type of update, you are currently looking at. You will most likely be aware of version numbers in the format of v1.2.3. From a general user perspective, this is quite easy: "Higher number = better" - for developers and operators, this is not as easy. One has to take care of other tools, that use the software, possible introduction of bugs and one has to know if security fixes were provided. Semantic Versioning allows this.
v1.2.3 has the MAJOR release of 1, the MINOR release of 2 and the PATCH release of 3.
A MAJOR release indicates, that the API was changed in a breaking way. So there may be additional options, but also some old options may not work any longer. From a user perspective, this may indicate, that the parameter
-u now needs the UID, instead of the username.
A MINOR release indicates, that new features were added and the API may be changed, but only in a way that allows backward compatibility.
And PATCH releases indicate, that something was fixed, according to the design.
How to update?
If you are using the pip installation, you can already update to Ansible 3.0.0. You should remove versions prior to 2.10 from your installation first, since pip cannot handle the update very smoothly.
# Remove ansible, if <= 2.9
$ pip uninstall ansible
# Install ansible
$ pip install ansible==3.0.0
In case you are using the version from your distribution, you should wait until your package maintainers are updating to 3.0.0, which may take some time. For Fedora, Ansible 3.0.0 will be in Fedora 34 release, for sure.
Below, you can find the official announcement and additional information.
In case you need additional information, not present in the above links or want to ask questions about the release, please feel free to get in touch with the community via the mailing lists or IRC.
Ansible 3.0.0 marks a huge milestone for the transition to modularity and community driven Ansible. You should definitively check out the detailed release notes to get an idea of the vast amount of changes in the community collections and stay tuned for Ansible 4.0.0.
Please also stay tuned, in case you want to learn Ansible. My first guide will be released on 24th February 2021.