我们希望听到您的意见!帮助我们深入了解 Ansible 生态系统现状。
参与 Ansible 项目 2024 年调查

Ansible 3.0.0 问答

Ansible 3.0.0 问答

Ansible 社区团队已宣布发布 Ansible 3.0.0,以下列出了我们迄今为止从社区成员那里收到的关于此版本的问题。如果您有任何未在下方找到答案的问题,请在邮件列表或 IRC上告知我们。

如何及时了解 Ansible 社区的变化?

订阅ansible-announce 邮件列表以获取版本发布公告,并订阅Bullhorn 时事通讯以获取社区新闻。Bullhorn 每两周发布一次,其中包含关键日期和更新。您也可以考虑注册参加 2021 年 3 月 9 日的 Ansible 贡献者峰会

关于 Ansible 社区软件包和 ansible-base/ansible-core

Ansible 3.0.0 中的 Ansible 语言是否有任何变化?

由于 Ansible 3.0.0 软件包依赖于与 Ansible 2.10.x 相同版本的 ansible-base,因此没有重大变化。

为什么 ansible-base/ansible-core 软件包的版本与 Ansible 软件包的版本不同?

当 Ansible 社区团队着手重组 Ansible 项目时,Ansible 被拆分为以下组件:

  • 核心引擎、模块和插件
  • 社区和合作伙伴支持的 Ansible 模块和插件集合

前者被称为 ansible-base,很快将更名为ansible-core。后者成为核心之上的补充,可以单独使用,也可以作为 Ansible 社区软件包的一部分使用,该软件包包括一组经过精心挑选和维护的集合。

Ansible 软件包的语义版本控制将使我们能够独立于核心引擎,分别表示包含的集合中的向后兼容性和重大更改。

由于这些是不同的组件和不同的内容,因此它们独立于彼此进行版本控制是合适的。

ansible-base/ansible-core 是否也将采用语义版本控制?

不会,管理 ansible-core 的团队目前不打算采用语义版本控制。

Ansible 3.0.0 和 ansible-base 2.10.x 之间有什么关联?

Ansible 3.0.0 是一个软件包,其中包含超过85 个 Ansible 集合。它不包含 ansible-base:它依赖于它并指定一个所需的版本范围,例如ansible-base>=2.10.6,<2.11,以便自动安装相应的核心软件包。对于 Ansible 4.0.0,此依赖项将改为ansible-core>=2.11,<2.12

ansible-base 2.10.x(以及不久的将来推出的 ansible-core)将继续作为独立软件包提供,供那些希望仅安装所需集合的用户使用。

包含的集合版本的范围是如何确定的?

发布构建工具查询包含的集合的最新版本,并根据该版本确定上限。

例如,如果集合的版本为 1.5,则范围为>=1.5,<2.0。如果集合的版本为 2.3,则范围为>=2.3,<3.0

总体思路是在单个 Ansible 软件包主版本的生命周期内,将集合保持在单个主版本中。

ansible --version 将返回哪个版本?

ansible --version 将返回 ansible-base 的版本,而不是 Ansible 软件包的版本,因为 ansible-base 是提供 ansible 命令的软件包。

安装和升级

如何安装 Ansible 3.0.0?

Ansible 3.0.0 社区软件包已发布到 PyPI,可以使用 pip install ansible==3.0.0 进行安装。

我可以从 Ansible 的早期版本升级到 Ansible 3.0.0 吗?如果是,哪些版本可以升级?

  • 要从 Ansible-2.10 升级到 Ansible-3.0:pip install --upgrade ansible
  • 要从 Ansible-2.9 或更早版本升级到 Ansible-3.0:pip uninstall ansiblepip install ansible。这是由于 pip 的限制。

可以,但升级命令根据您当前的版本而有所不同。

Ansible 3.0.0 基于 ansible-base 2.10,因此 Ansible-2.10 和 Ansible-3.0 之间的 playbook 语法保持不变。但是,某些模块和插件可能存在不兼容性,因为 Ansible-3.0.0 允许在集合中进行向后不兼容的更改。

我能否从 Ansible 3.0.0 升级到 Ansible 4.0.0?

可以,但是由于 ansible-base 重命名为 ansible-core,您将需要再次卸载并重新安装:pip uninstall ansiblepip install ansible

Ansible 4.0.0 将基于 ansible-core 2.11,因此 Ansible 4.0.0 中的 playbook 语法可能包含向后不兼容的更改(ansible-core 不使用语义版本控制,因此次要版本的更新可能包含向后不兼容的更改)。当 Ansible 4.0.0 准备好开始其预发布周期时,将提供移植指南来帮助您完成这些更改。

发布节奏和范围

未来发布的节奏是什么?

计划每三周发布 Ansible 软件包的次要版本(例如 3.1.0、3.2.0)。这些版本将包括新的向后兼容的功能、模块和插件以及错误修复。

Ansible 软件包的主版本(例如 4.0.0、5.0.0)将在 ansible-core 发布新版本后发布。Ansible 4.0.0 版本计划于 2021 年 5 月发布,紧随 4 月发布的 ansible-core 2.11 之后。在 4.0.0 之后,主版本的发布周期将变为六个月,5.0.0 将于 11 月发布,紧随计划中的 ansible-core 2.12 版本发布。

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)。

Ansible 社区软件包的每个主版本都将接受每个包含的集合的最新发布版本,并且可能包含 ansible-core 的最新发布版本。Ansible 社区软件包的主版本可能包含包含的集合中模块和其他插件以及/或核心功能的重大更改。

鉴于此处使用了语义版本控制,每个补丁版本将包含哪些更改?

补丁版本仅在发现需要快速解决的错误时才会使用。例如,如果在我们发布的 3.1.0 版本中发现了一个打包错误,导致无法构建 Debian 软件包,则可能会在第二天发布 3.1.1 版本来修复此问题。补丁版本不允许包含新功能。

打包

Ansible 3.0.0 是否将作为上游 RPM 提供?

不会。基于 RPM 的 Linux 发行版,如Fedora,已经创建了优质的 Ansible RPM 软件包有一段时间了。因此,我们决定对于 Ansible-2.10 和 ansible-base-2.10,Ansible 项目将不再提供预构建的 RPM。

Ansible 3.0.0 是否可在 Ubuntu Launchpad 上使用?

是的。Ansible 社区团队正在赶上 Ansible 内容打包方式的变化,并计划很快在 PPA 中发布版本。团队目前正在测试一个新的 GitHub 操作,以构建 PPA 的 deb 文件。

术语

  • ansible 软件包

一个多合一的软件包(Python、deb、rpm 等),通过包含已迁移到 Ansible 集合的模块和插件来提供与 Ansible 2.9 的向后兼容性。

Ansible 软件包依赖于 ansible-base(很快将改为 ansible-core)。因此,当您执行 pip install ansible 时,pip 会自动安装 ansible-base。

Ansible 3.0.0 包含更多集合,这要归功于更广泛的 Ansible 社区根据社区清单审查集合。此包含内容的列表可在ansible-build-data中找到。

  • 集合

用于捆绑和分发 Ansible 内容的打包格式:插件、角色、模块、playbook、文档等。可以独立于其他集合或 ansible-base 发布,以便更快地向用户提供功能和错误修复。可从源代码存储库安装,也可从galaxy.ansible.com通过 ansible-galaxy collection install <namespace.collection> 安装,或使用requirements.yml 文件安装。

  • ansible-base

Ansible 2.10 版本中 github.com/ansible/ansible 中包含的代码库的新增内容。它包含最少的模块和插件,并允许安装其他集合。类似于 Ansible 2.9,但没有任何内容已迁移到集合中。

在 Ansible 的 devel 分支中重命名为 ansible-core,并将从 2.11 版本开始使用该名称发布。

  • Red Hat Ansible Automation Platform

Red Hat 提供的商业化企业级产品,它结合了多个以 Ansible 为中心的项目,包括 ansible-core、awx、galaxy_ng、集合和各种 Red Hat 工具,这些工具专注于集成的 Ansible 用户体验。