关于Ansible执行环境的问题

问题描述 投票:0回答:1

我阅读了以下有关 RedHat Ansible 执行环境的声明

“通过使用自动化执行环境,您可以使用相同的便携式环境在一个系统上开发 Ansible Playbook 并在另一个系统上运行它们”

我需要对上述陈述进行一些澄清。提到我们可以在多个系统上使用示例剧本,而不必担心依赖关系,因为执行环境将处理依赖关系。但是,如果我的托管节点上的 python 是不同的版本,或者如果控制节点上的 ansible 是不同的版本,那么当首先创建并执行 playbook 时会怎样。几年后,同样的剧本在这种情况下将不再适用。那么执行环境将如何帮助我们。

ansible redhat ansible-2.x ansible-awx
1个回答
0
投票

就 ansible 而言,自动化执行环境的重点是容器化控制节点的用户空间。根据 docs,在您得到的图像中

  • 基础容器镜像
  • Python 的版本
  • ansible-core的版本
  • ansible-runner 的版本
  • Ansible 集合,有版本限制
  • 系统包,有版本限制
  • Python 包,有版本限制
  • 要下载、安装或配置的其他项目

那么我们通过例子来说明一下,假设你想用ansible来管理VMware。 Community.vmware 集合文档 指导我们安装

  • Pyvmomi
  • 适用于 Python 的 vSphere 自动化 SDK
  • 适用于 Python 的 vSAN 管理 SDK

所以你就这么做了 - 在构建执行环境时,你指定具体的基础镜像、ansible版本、集合版本、python要求等,并且在构建之后 - 你不能更改其中的任何内容!所有依赖关系都被及时冻结。随后的每次运行都将使用相同的容器映像,几年后什么都不会改变。您将获得 bug 与 bug 兼容的运行。

只有当您使用不可变标签概念时,上面的内容才是正确的 - 也就是说,每个构建/重建的图像都应该有一个不同的标签,并且您不能覆盖存储库级别上的现有标签。如果您总是构建和使用

latest
标签,则不要期望得到任何保证,这是一种反模式。

回复:“如果我的托管节点上的 python 是不同的版本怎么办” - 这取决于你!

如果您绝对需要受管节点上的特定 python 版本以及一组特定的依赖项 - 您的剧本应该反映这一点。 Ansible 需要相当准的 python 安装,在我使用它的 10 年里,我很少遇到解释器问题,尽管我当然不能说没有。通常,您应该期望在操作系统级别上有一定程度的 python 兼容性和稳定性,如果 RHEL 在其受支持的生命周期内发生这种回归,我会考虑向 Redhat 提交支持案例。

© www.soinside.com 2019 - 2024. All rights reserved.