Ansible - 版本 2、3 和 4 之间有什么区别?

mon*_*mon 15 ansible

之前我使用ansible 2.x,现在最新的ansible版本是4.x。已阅读Ansible 路线图宣布社区 Ansible 3.0.0 软件包,但不清楚版本 2、3 和 4 之间有什么区别。看起来版本 2.x(基础或核心)包含在 Ansible 3.x 中,并且似乎包含在4.x 也是如此。目前尚不清楚使用 Ansible 2.9 开发的 playbook 是否与 Ansible 4.x 兼容。

怎样才能清楚地了解他们的差异呢?请提供最佳资源以了解 Ansible 2、3 和 4 之间的差异。

如今,Ansible 开源世界中有 3 种不同的产物:

Ansible Core - 最小的 Ansible 语言和运行时(很快将从 ansible-base 重命名) Galaxy 上的 Ansible Collections(社区支持) Ansible 社区包 - Ansible 安装,包括 ansible-base/core 加上社区策划的集合 现在这些工件是单独管理的,他们的版本也有所不同。展望未来,Ansible Core 将维持其现有的编号方案(类似于 Linux 内核)。ansible-base 2.10 之后的 Ansible Core 的下一个版本将是 ansible-core 2.11。Ansible 社区包(Ansible Core + 社区集合)正在采用语义版本控制。2.10 之后的 Ansible 社区包的下一个版本是 3.0.0。
在此输入图像描述

小智 8

基本上,Ansible 只是想将 ansible 运行时和模块/插件/回调/操作分开,以便可以独立管理它们。

在 Ansible 3.0 及更高版本上,它现在分为两个包:

  • ansible-core(它是ansible 3.0中的ansible-base),运行时和内置集合(核心模块/插件/等的候选列表)
  • ansible,社区策划的收藏

ansible-core 包将维持现有的版本控制方案(类似于 Linux 内核),而 ansible 包正在采用语义版本控制

因此 Ansible 4.0 包含两个软件包:ansible-core 2.12(带有 ansible.builtin Collection 的运行时)和 ansible 4.0(社区策划的 Collections)。

我想为 ansible 2.9.x 编写的 playbook 仍将继续工作并在 Ansible 4 (ansible-core 2.12.x) 中得到支持。正如 mdaniel 所提到的,最好开始使用限定的模块名称。

最好检查发行说明是否有任何重大更改。

更多信息:


mda*_*iel 4

据我所知,他们的问答博客文章列出了对 Ansible 名称和新版本控制方案的完全令人困惑的劫持,然后他们的“构建数据”存储库给出了底层 ansible-core 和相关集合的实际情况打包在每个新的“ansible”版本中

目前尚不清楚使用 Ansible 2.9 开发的 playbook 是否与 Ansible 4.x 兼容。

我怀疑,只要 ansible-core 接受不合格的模块名称,剧本就会继续工作,并且永远存在的星号表示底层集合可以满足以前不需要的东西,甚至可以满足一般要求所有软件中发现的错误

我还猜测,除非您的项目打算永远保留旧版 ansible 版本,否则使用合格的模块名称可能是最安全的未来保障,尽管我确实担心这样的更改将带来可怕的冗长