Ansible-base 2.10 迁移指南

警告

为了准备 2.10 版本的发布,许多插件和模块已迁移到 Ansible Galaxy 的 Collections 中。关于 Collections 的当前开发状态和常见问题,请参阅 Ansible Collections 社区指南。我们预计 2.10 迁移指南在 2.10 正式发布前会频繁更新。请关注我们各种 与 Ansible 社区沟通 频道中关于 collections 的讨论,以获取关于 devel 分支状态的最新信息。

本节讨论了 Ansible 2.9 与 Ansible-base 2.10 之间的行为变化。

本指南旨在帮助您更新 playbook、插件以及 Ansible 基础设施的其他部分,以便它们能够与此版本的 Ansible-base 协同工作。

建议您将本页与 Ansible-base 2.10 更新日志 (Changelog) 结合阅读,以了解您可能需要进行哪些更新。

Ansible-base 主要面向希望仅使用可用 collections 中一小部分受控子集的开发人员和用户。普通用户应安装 ansible。

完整的迁移指南列表可以在 迁移指南 中找到。

Playbook

  • 修复了布尔关键字的一个 bug,该 bug 曾导致随机字符串返回‘False’,现在如果它们不是正确的布尔值,则应返回错误。示例:diff: yes- 曾返回 False

  • 新增一个事实(fact)ansible_processor_nproc,反映进程可用的 vcpu 数量(回退到调度程序可用的 vcpu 数量)。

命令行

  • 已删除 ansible-galaxy login 命令,因为其使用的底层 GitHub 认证 API 即将关闭。现在通过 ansible-galaxy 向 Galaxy 发布角色或集合时,需要通过令牌文件(默认位置 ~/.ansible/galaxy_token)或(不安全地)通过 ansible-galaxy--token 参数将 Galaxy API 令牌传递给 CLI。

弃用内容

模块

警告

本页上的链接可能未指向模块的最新版本。我们将在有能力时更新它们。

  • ansible-base 2.10.0 版本在用户未指定 mode 参数时,将基于文件的任务的默认模式更改为 0o600 & ~umask。这是对 CVE 报告的响应,但我们对此进行了重新评估。因此,该模式更改已在 2.10.1 中恢复,模式现在将默认为 0o666 & ~umask,与之前的 Ansible 版本一致。

  • 如果您在使用 2.10.0 时为了指定较低限制的权限而更改了任何任务,这些更改在 2.10.1 中将变得不必要(但不会造成损害)。

  • 为了避免 CVE-2020-1736 中提出的问题,请在所有支持该参数的基于文件的任务中明确指定 mode 参数。

  • dnfyum - 自 2.10.1 版本起,dnf 模块(以及使用 dnfyum 动作)现在会正确验证软件包的 GPG 签名(CVE-2020-14365)。如果您看到类似 Failed to validate GPG signature for [package name] 的错误,请确保您已为您正在使用的 DNF 存储库和/或软件包导入了正确的 GPG 密钥。一种方法是使用 rpm_key 模块。虽然我们不鼓励这样做,但在某些情况下可能需要禁用 GPG 检查。可以通过在您的 dnfyum 任务中明确添加 disable_gpg_check: yes 来实现。

值得注意的模块变更

  • 使用 add_file_common_args=True 创建的 Ansible 模块添加了许多未记录的参数,这些参数主要是为了简化某些动作插件的实现。未记录的参数 srcfollowforcecontentbackupremote_srcregexpdelimiterdirectory_mode 现在不再被添加。依赖这些选项的模块需要自行指定它们。

  • 当运行 Ansible 模块时,Ansible 不再在当前工作目录(通常是 remote_user 的主目录)中查找 Python 模块。这是为了修复 OpenBSD 上特权提升的问题,并减轻当前工作目录可被恶意用户写入时的攻击向量。请将运行 Ansible 模块所需的任何 Python 模块安装在系统级位置,或安装在位于 remote_user$PYTHONPATH 中且可被 become_user 读取的另一个目录中。

插件

Lookup 插件名称的大小写敏感性

  • 在 Ansible 2.10 之前,作为 lookup() 函数参数传递的查找插件名称被视为大小写不敏感,这与通过 with_<lookup_name> 调用的查找不同。2.10lookup()with_ 带来了统一性,两者现在均为大小写敏感。

值得注意的插件变更

  • 集合中的缓存插件可用于缓存来自清单插件的数据。此前,集合中的缓存插件只能用于事实缓存。

  • 来自 FILE_COMMON_ARGUMENTS 的一些未记录参数已被移除;使用这些参数(特别是动作插件)的插件需要进行调整。被移除的未记录参数是 srcfollowforcecontentbackupremote_srcregexpdelimiterdirectory_mode

执行模块的 Action 插件应使用全限定模块名称 (FQMN)

  • 调用模块的动作插件应尽可能向 _execute_module() 传递明确的、完全限定的模块名称(例如 ansible.builtin.file 而非 file)。这确保了任务的集合搜索顺序不会被用于解析模块。否则,可能会意外使用搜索路径中较早的集合中的模块。

移植自定义脚本

无显著变更