版本发布和维护

本节介绍 Ansible 社区项目的版本发布周期、规则和维护计划:Ansible 社区软件包和ansible-core。这两个项目具有不同的版本控制系统、维护结构、内容和工作流程。

Ansible 社区软件包

ansible-core

使用新版本控制(2.10,然后是 3.0.0)

继续使用“经典 Ansible”版本控制(2.11,然后是 2.12)

遵循语义版本控制规则

不使用语义版本控制

一次只维护一个版本

维护最新版本以及两个较旧的版本

包括语言、运行时和选定的集合

包括语言、运行时和内置插件

在集合存储库中开发和维护

在 ansible/ansible 存储库中开发和维护

许多社区用户安装 Ansible 社区软件包。Ansible 社区软件包提供了 Ansible 2.9 中存在的功能,其中包含 85 个以上的集合,包含数千个模块和插件。ansible-core 选项主要针对想要仅安装其需要的集合的开发人员和用户。

版本发布周期概述

这两个社区版本是相关的 - 版本发布周期遵循以下模式

  1. 发布新的 ansible-core 主版本,例如 ansible-core 2.11

    • 发布新的 ansible-core,现在维护 ansible-core 以及之前的两个版本(在本例中为 ansible-base 2.10、Ansible 2.9)

    • devel 分支中继续进行 ansible-core 的新功能开发

  2. Ansible 社区软件包中的集合冻结(没有新的集合或现有集合的新版本)

  3. Ansible 社区软件包的候选版本,测试,根据需要进行额外的候选版本发布

  4. 基于新的 ansible-core 发布新的 Ansible 社区软件包主版本,例如,基于 ansible-core 2.11 发布 Ansible 4.0.0

    • 最新的 Ansible 社区软件包版本是现在唯一维护的版本

    • 在集合中继续进行新功能开发

    • 各个集合可以进行多个次要和主要版本发布

  5. 三个维护的 ansible-core 版本每四周发布一次次要版本(2.11.1)

  6. 单个维护的 Ansible 社区软件包版本每四周发布一次次要版本(4.1.0)

  7. ansible-core 功能冻结

  8. ansible-core 候选版本,测试,根据需要进行额外的候选版本发布

  9. 发布下一个 ansible-core 主版本,循环重新开始

Ansible 社区软件包版本发布周期

Ansible 社区团队通常每年发布两个社区软件包主版本,在一个灵活的版本发布周期中,该周期落后于ansible-core 的发布。此周期可以延长,以便在发布新版本之前,能够正确实现和测试较大更改。有关即将发布的版本详细信息,请参阅Ansible 路线图。在主版本之间,我们每四周发布一次 Ansible 社区软件包的新次要版本。次要版本包括新的向后兼容的功能、模块和插件,以及错误修复。

从 2.10 版本开始,Ansible 社区团队保证一次只维护一个社区软件包主版本。例如,当发布 Ansible 4.0.0 时,团队将停止发布新的 3.x 版本。社区成员可以根据需要维护旧版本。

注意

每个 Ansible EOL 版本可能在下一个版本的首次发布时或之后不久发布一个最终维护版本。当这种情况发生时,最终维护版本在其发布之日即为 EOL。

注意

较旧的、未维护的 Ansible 社区软件包版本可能包含未修复的安全漏洞(CVE)。如果您正在使用不再维护的 Ansible 社区软件包版本,我们强烈建议您尽快升级,以利用最新的功能和安全修复。

每个 Ansible 社区软件包主版本都接受每个包含集合的最新发布版本以及 ansible-core 的最新发布版本。有关具体时间表和截止日期,请参阅每个版本的Ansible 路线图。Ansible 社区软件包的主版本可能包含包含集合中的模块和其他插件以及核心功能的重大更改。

Ansible 社区软件包遵循语义版本控制规则。Ansible 社区软件包的次要版本只接受包含集合中向后兼容的更改,即不包括集合主版本。集合也必须使用语义版本控制,因此集合版本号反映了此规则。例如,如果 Ansible 3.0.0 发布带有 community.general 2.0.0,那么 Ansible 3.x 的所有次要版本(例如 Ansible 3.1.0 或 Ansible 3.5.0)都必须包含 community.general 的 2.x 版本(例如 2.8.0 或 2.9.5),而不是 3.x.x 或更高版本的主版本。

集合中的工作在各个集合存储库中进行跟踪。

您可以参考Ansible 软件包移植指南,了解有关如何更新您的剧本以在较新版本的 Ansible 上运行的提示。对于 Ansible 2.10 及更高版本,您可以使用pip 安装 Ansible 软件包。有关详细信息,请参阅安装 Ansible。您可以从https://releases.ansible.com/ansible/ 下载较旧的 Ansible 版本。

Ansible 社区变更日志

此表链接到每个 Ansible 主版本的变更日志。这些变更日志包含每个次要版本中的日期和重大更改。

Ansible 社区软件包版本

状态

核心版本依赖项

11.0.0

开发中(未发布)

2.18

10.x 变更日志

当前

2.17

9.x 变更日志

次要/修补程序版本(EOL 2024 年 11 月)

2.16

8.x 变更日志

未维护(已停止维护)

2.15

7.x 变更日志

未维护(已停止维护)

2.14

6.x 变更日志

未维护(已停止维护)

2.13

5.x 变更日志

未维护(已停止维护)

2.12

4.x 变更日志

未维护(已停止维护)

2.11

3.x 变更日志

未维护(已停止维护)

2.10

2.10 变更日志

未维护(已停止维护)

2.10

ansible-core 版本发布周期

ansible-core 在灵活的版本发布周期中进行开发和发布。我们可以延长此周期,以便在发布新版本之前,能够正确实现和测试较大更改。有关即将发布的版本详细信息,请参阅ansible-core 路线图

ansible-core 具有逐步的维护结构,该结构扩展到三个主版本。有关更多信息,请阅读有关开发和稳定版本维护工作流程,或者参阅ansible-core 控制节点 Python 支持 中的图表,了解当前版本维护的程度。

注意

较旧的、未维护的ansible-core 版本可能包含未修复的安全漏洞(CVE)。如果您正在使用不再维护的ansible-core 版本,我们强烈建议您尽快升级,以利用最新的功能和安全修复。ansible-core 维护持续 3 个版本。因此,最新版本在首次发布时会收到安全和一般错误修复,在发布下一个ansible-core 版本时会收到安全和关键错误修复,并且在发布该版本的后续版本时只接收安全修复。

您可以参考Ansible 核心移植指南,了解有关如何更新您的剧本以在较新版本的ansible-core 上运行的提示。

您可以使用pip 安装ansible-core。有关详细信息,请参阅安装 Ansible

ansible-core 控制节点 Python 支持

ansible-core 2.12 版本开始,每个版本都包括对三个最新发布的 Python 版本的控制节点支持。

ansible-core 目标节点 Python 支持

ansible-core 版本 2.16 开始,每个版本都包含对目标节点的支持。

  • 最近发布的 6 个 Python 版本。

  • 每隔 6 个 ansible-core 版本(2.16、2.22 等)发布的 7 个最近发布的 Python 版本。

ansible-core 版本 2.16 及更早版本包含对 Python 2.7 的支持。

ansible-core 目标节点 PowerShell 和 Windows 支持

ansible-core 在 Windows 上支持每个 Windows 版本附带的 PowerShell 基线版本。例如,Windows Server 2016 附带 PowerShell 5.1,因此 Ansible 将在 Windows Server 2016 支持的生命周期内支持 PowerShell 5.1。每个 Windows 版本的支持由 Windows 生命周期策略以及每个版本达到扩展结束日期的时间决定。例如,Windows Server 2012 和 2012 R2 的扩展结束日期为 2023 年 10 月 10 日,而 Windows Server 2016 为 2027 年 1 月 12 日。Windows 支持不与 Microsoft 提供的 3 年扩展安全更新 (ESU) 支持保持一致,这是对已过 Microsoft 正常支持结束日期的产品提供的付费支持选项。

ansible-core 支持矩阵

此表链接到每个主要 ansible-core 版本的更改日志。这些更改日志包含每个次要版本发布的日期和重大更改。列出的日期表示维护周期的开始日期。

版本

支持

生命周期结束

控制节点 Python

目标 Python / PowerShell

2.18

GA: 2024 年 11 月 4 日
紧急:2025 年 5 月 19 日
安全:2025 年 11 月 3 日

2026 年 5 月

Python 3.10 - 3.13
Python 3.8 - 3.13
PowerShell 5.1

2.17

GA: 2024 年 5 月 20 日
紧急:2024 年 11 月 4 日
安全:2025 年 5 月 19 日

2025 年 11 月

Python 3.10 - 3.12
Python 3.7 - 3.12
PowerShell 5.1

2.16

GA: 2023 年 11 月 6 日
紧急:2024 年 5 月 20 日
安全:2024 年 11 月

2025 年 5 月

Python 3.10 - 3.12
Python 2.7
Python 3.6 - 3.12
Powershell 5.1

2.15

GA: 2023 年 5 月 22 日
紧急:2023 年 11 月 6 日
安全:2024 年 5 月 20 日

2024 年 11 月

Python 3.9 - 3.11
Python 2.7
Python 3.5 - 3.11
PowerShell 3 - 5.1

2.14

GA: 2022 年 11 月 7 日
紧急:2023 年 5 月 22 日
安全:2023 年 11 月 6 日
EOL
2024 年 5 月 20 日
Python 3.9 - 3.11
Python 2.7
Python 3.5 - 3.11
PowerShell 3 - 5.1

2.13

GA: 2022 年 5 月 23 日
紧急:2022 年 11 月 7 日
安全:2023 年 5 月 22 日
EOL
2023 年 11 月 6 日
Python 3.8 - 3.10
Python 2.7
Python 3.5 - 3.10
PowerShell 3 - 5.1

2.12

GA: 2021 年 11 月 8 日
紧急:2022 年 5 月 23 日
安全:2022 年 11 月 7 日
EOL
2023 年 5 月 22 日
Python 3.8 - 3.10
Python 2.6 - 2.7
Python 3.5 - 3.10
PowerShell 3 - 5.1

2.11

GA: 2021 年 4 月 26 日
紧急:2021 年 11 月 8 日
安全:2022 年 5 月 23 日
EOL
2022 年 11 月 7 日
Python 2.7
Python 3.5 - 3.9
Python 2.6 - 2.7
Python 3.5 - 3.9
PowerShell 3 - 5.1

2.10

GA: 2020 年 8 月 13 日
紧急:2021 年 4 月 26 日
安全:2021 年 11 月 8 日
EOL
2022 年 5 月 23 日
Python 2.7
Python 3.5 - 3.9
Python 2.6 - 2.7
Python 3.5 - 3.9
PowerShell 3 - 5.1

2.9

GA: 2019 年 10 月 31 日
紧急:2020 年 8 月 13 日
安全:2021 年 4 月 26 日
EOL
2022 年 5 月 23 日
Python 2.7
Python 3.5 - 3.8
Python 2.6 - 2.7
Python 3.5 - 3.8
PowerShell 3 - 5.1

准备新版本发布

功能冻结

在准备发布新版本的过程中,核心开发人员和维护人员专注于改进发布候选版本,而不是添加或审查新功能。我们可能会实施功能冻结。

功能冻结意味着我们将延迟与即将发布的版本无关的新功能和修复,以便我们尽快创建新版本。

发布候选版本

我们在发布 Ansible 或 ansible-core 的每个新主要版本之前至少创建一个发布候选版本。发布候选版本允许 Ansible 社区试用新功能,在发布候选版本上测试现有剧本,并报告他们发现的错误或问题。

Ansible 和 ansible-core 标记第一个发布候选版本 (RC1),该版本通常计划持续五个工作日。如果在此期间没有发现重大错误或问题,则发布候选版本将成为最终版本。

如果第一个候选版本存在重大问题,则团队和社区会修复这些问题并标记第二个发布候选版本 (RC2)。第二个候选版本持续时间比第一个短。如果在两个工作日后没有报告 RC2 的问题,则第二个发布候选版本将成为最终版本。

如果 RC2 中存在重大问题,则循环将从另一个发布候选版本重新开始,并重复,直到维护人员同意所有重大问题都已修复。

开发和维护工作流程

在版本之间,Ansible 社区开发新功能、维护现有功能,并在 ansible-core 和 Ansible 社区包中包含的集合中修复错误。

Ansible 社区包工作流程

Ansible 社区在集合存储库中开发和维护 Ansible 社区包中包含的功能,工作流程如下

  • 开发人员根据每个集合的贡献规则,将新功能和错误修复添加到各个集合中。

  • 每个新功能和每个错误修复都包含一个更改日志片段,描述该工作。

  • 发布工程师每四周为当前版本创建一个次要版本,以确保用户可以使用最新的错误修复。

  • 在开发周期结束时,发布工程师宣布哪些集合以及包含的每个集合的哪个主要版本将包含在下一个 Ansible 社区包版本中。在此之后,可能不会添加新的集合和新的主要版本,并且创建新版本的工作将开始。

我们通常不为 Ansible 社区包的未维护版本提供修复程序,但有时会为严重问题提供例外。

一些集合由 Ansible 团队维护,一些由合作伙伴组织维护,一些由社区团队维护。有关在 Ansible 维护的集合中添加功能或修复错误的更多信息,请参阅 为 Ansible 维护的集合贡献.

ansible-core 工作流程

Ansible 社区在 GitHub 上开发和维护 ansible-core,工作流程如下

  • 开发人员将新功能和错误修复添加到 devel 分支。

  • 每个新功能和每个错误修复都包含一个更改日志片段,描述该工作。

  • 开发团队将错误修复移植到一个、两个或三个稳定分支,具体取决于错误的严重程度。他们不会移植新功能。

  • 发布工程师每四周为每个维护的版本创建一个次要版本,以确保用户可以使用最新的错误修复。

  • 在开发周期结束时,发布工程师会实施功能冻结,并且创建新版本的工作将开始。

我们通常不为 ansible-core 的未维护版本提供修复程序,但有时会为严重问题提供例外。

有关在 ansible-core 中添加功能或修复错误的更多信息,请参阅 Ansible 开发周期.

生成更改日志

我们根据片段生成更改日志。在为现有模块和插件创建新功能或修复错误时,请创建一个更改日志片段来描述更改。新模块或插件不需要更改日志条目。这些项目的详细信息将从模块文档中生成。

要将更改日志片段添加到 Ansible 社区包中的集合,我们建议使用 antsibull-changelog 实用程序.

要添加 ansible-core 中新功能和错误修复的更改日志片段,请参阅社区指南中的 更改日志示例和说明.

弃用周期

有时我们会删除一个功能,通常是为了支持我们希望做得更好的重新实现。为此,我们有一个弃用周期。首先,我们将功能标记为“已弃用”。这通常伴随着对用户的警告,说明我们为什么弃用它,他们应该切换到哪些替代方案以及我们何时(哪个版本)计划永久删除该功能。

Ansible 社区包弃用周期

由于 Ansible 是一个包含各个集合的包,因此弃用周期取决于集合维护人员。我们建议集合维护人员在一个 Ansible 主要版本中弃用一个功能,并且至少在下一个主要 Ansible 版本发布之前(一年)不要删除该功能。例如,在 3.1.0 中弃用该功能,并且至少在 5.0.0 或 4.0.0 之前不要删除该功能。集合应该使用语义版本控制,这样主要集合版本就不能在 Ansible 主要版本中更改。因此,删除不应该在下一个主要 Ansible 社区包版本发布之前进行。这取决于每个集合维护人员,不能保证。

ansible-core 弃用周期

ansible-core 中,弃用周期通常跨越 4 个功能版本(2.x,其中 x 代表功能版本)。该功能通常会在我们宣布弃用后的第 4 个版本中被移除。例如,在 2.10 中被弃用的功能将在 2.13 中被移除。跟踪与版本数量相关,而不是版本编号本身。尽管这是标准,但有时一个功能或行为的弃用周期可能会根据使用情况或移除的紧迫性而有更长或更短的弃用周期。未经意或未记录的功能可能在没有弃用周期的情况下被移除。在本例中,未经意功能特指在发布路线图之外出现的突发功能。

另见

贡献者指南

Ansible Core 贡献者和维护者指南

测试策略

测试策略

Ansible 社区指南

社区信息和贡献

开发邮件列表

开发主题邮件列表

实时聊天

如何加入 Ansible 聊天频道