Release and maintenance

Release cycle

Ansible is developed and released on a flexible six month release cycle. This cycle can be extended in order to allow for larger changes to be properly implemented and tested before a new release is made available.

Ansible has a graduated maintenance structure that extends to three major releases. For more information, read about the Development and stable version maintenance workflow or see the chart in Release status for the degrees to which current releases are maintained.

If you are using a release of Ansible that is no longer maintained, we strongly encourage you to upgrade as soon as possible in order to benefit from the latest features and security fixes.

Older, unmaintained versions of Ansible can contain unfixed security vulnerabilities (CVE).

You can refer to the porting guides for tips on updating your Ansible playbooks to run on newer versions.

Release status

This table links to the release notes for each major release. These release notes (changelogs) contain the dates and significant changes in each minor release.

Ansible Release

Status

devel

In development (2.10 unreleased, trunk)

2.9 Release Notes

Maintained (security and general bug fixes)

2.8 Release Notes

Maintained (security and critical bug fixes)

2.7 Release Notes

Maintained (security fixes)

2.6 Release Notes

Unmaintained (end of life)

2.5 Release Notes

Unmaintained (end of life)

<2.5

Unmaintained (end of life)

You can download the releases from https://releases.ansible.com/ansible/.

Note

Ansible maintenance continues for 3 releases. Thus the latest Ansible release receives security and general bug fixes when it is first released, security and critical bug fixes when the next Ansible version is released, and only security fixes once the follow on to that version is released.

Development and stable version maintenance workflow

The Ansible community develops and maintains Ansible on GitHub.

New modules, plugins, features and bugfixes will always be integrated in what will become the next major version of Ansible. This work is tracked on the devel git branch.

Ansible provides bugfixes and security improvements for the most recent major release. The previous major release will only receive fixes for security issues and critical bugs. Ansible only applies security fixes to releases which are two releases old. This work is tracked on the stable-<version> git branches.

The fixes that land in maintained stable branches will eventually be released as a new version when necessary.

Note that while there are no guarantees for providing fixes for Unmaintained releases of Ansible, there can sometimes be exceptions for critical issues.

Changelogs

Since Ansible 2.5, we have generated changelogs based on fragments. Here is the generated changelog for 2.9 as an example. When creating new features or fixing bugs, create a changelog fragment describing the change. A changelog entry is not needed for new modules or plugins. Details for those items will be generated from the module documentation.

We’ve got examples and instructions on creating changelog fragments in the Community Guide.

Older versions logged changes in stable-<version> branches at stable-<version>/CHANGELOG.md. For example, here is the changelog for 2.4 on GitHub.

Release candidates

Before a new release or version of Ansible can be done, it will typically go through a release candidate process.

This provides the Ansible community the opportunity to test Ansible and report bugs or issues they might come across.

Ansible tags the first release candidate (RC1) which is usually scheduled to last five business days. The final release is done if no major bugs or issues are identified during this period.

If there are major problems with the first candidate, a second candidate will be tagged (RC2) once the necessary fixes have landed. This second candidate lasts for a shorter duration than the first. If no problems have been reported after two business days, the final release is done.

More release candidates can be tagged as required, so long as there are bugs that the Ansible core maintainers consider should be fixed before the final release.

Feature freeze

While there is a pending release candidate, the focus of core developers and maintainers will on fixes towards the release candidate.

Merging new features or fixes that are not related to the release candidate may be delayed in order to allow the new release to be shipped as soon as possible.

Deprecation Cycle

Sometimes we need to remove a feature, normally in favor of a reimplementation that we hope does a better job. To do this we have a deprecation cycle. First we mark a feature as ‘deprecated’. This is normally accompanied with warnings to the user as to why we deprecated it, what alternatives they should switch to and when (which version) we are scheduled to remove the feature permanently.

The cycle is normally across 4 feature releases (2.x.y, where the x marks a feature release and the y a bugfix release), so the feature is normally removed in the 4th release after we announce the deprecation. For example, something deprecated in 2.7 will be removed in 2.11, assuming we don’t jump to 3.x before that point. The tracking is tied to the number of releases, not the release numbering.

For modules/plugins, we keep the documentation after the removal for users of older versions.

See also

Committers Guidelines

Guidelines for Ansible core contributors and maintainers

Testing Strategies

Testing strategies

Ansible Community Guide

Community information and contributing

Ansible release tarballs

Ansible release tarballs

Development Mailing List

Mailing list for development topics

irc.freenode.net

#ansible IRC chat channel