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 ansible
;pip 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 ansible
;pip install ansible
。
Ansible 4.0.0 将基于 ansible-core 2.11,因此 Ansible 4.0.0 中的 playbook 语法可能包含向后不兼容的更改(ansible-core 不使用语义化版本控制,因此次要版本的更新可能包含向后不兼容的更改)。当 Ansible 4.0.0 准备好开始其预发布周期时,将提供移植指南来帮助您完成这些更改。
发布节奏和范围
未来 Ansible 的发布节奏是什么?
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 之后,主版本的发布周期将变为 6 个月,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 action 来构建 PPA 的 deb 包。
术语
一个多合一的软件包(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 内容(插件、角色、模块、剧本、文档等)的打包格式。可以独立于其他集合或 ansible-base 发布,以便可以更快地向用户提供功能和错误修复。从源代码存储库安装,从 galaxy.ansible.com 通过 ansible-galaxy collection install <namespace.collection>
安装,或使用 requirements.yml 文件 安装。
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、集合和各种专注于集成 Ansible 用户体验的 Red Hat 工具。