Ansible-base 2.10 移植指南

警告

为了准备 2.10 版本的发布,许多插件和模块已迁移到 Ansible Galaxy 上的集合。有关集合的当前开发状态和常见问题解答,请参见 Ansible 集合社区指南。我们预计 2.10 移植指南在 2.10 版本发布之前会频繁更改。请关注我们在各种 与 Ansible 社区交流 渠道中有关集合的讨论,获取有关 devel 分支状态的最新信息。

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

它旨在帮助更新您的剧本、插件和 Ansible 基础设施的其他部分,使其能够与该版本的 Ansible-base 协同工作。

我们建议您阅读此页面以及 Ansible-base 2.10 的变更日志,了解您可能需要进行哪些更新。

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

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

剧本

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

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

命令行

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

弃用

模块

警告

此页面上的链接可能不会指向模块的最新版本。我们将尽力更新它们。

  • ansible-base 的 2.10.0 版本将基于文件的任务的默认模式更改为 0o600 & ~umask,即使用户没有在基于文件的任务上指定 mode 参数。这是对 CVE 报告的回应,我们对此进行了重新考虑。因此,模式更改已在 2.10.1 中恢复,模式现在将默认为 0o666 & ~umask,与以前版本的 Ansible 相同。

  • 如果您在使用 2.10.0 时将任何任务更改为指定权限限制较少的权限,那么这些更改在 2.10.1 中将不再需要(但不会造成任何损害)。

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

  • dnfyum - 从 2.10.1 版本开始,dnf 模块(以及在使用 dnf 时使用的 yum 操作)现在可以正确地验证包的 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 读取。

插件

查找插件名称区分大小写

  • 在 Ansible 2.10 之前,作为 lookup() 函数的参数传递的查找插件名称被视为不区分大小写,而不是通过 with_<lookup_name> 调用的查找。 2.10 使 lookup()with_ 都区分大小写,以保持一致性。

值得注意的插件更改

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

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

执行模块的操作插件应使用完全限定的模块名称

  • 调用模块的动作插件应尽可能向 _execute_module() 传递显式且完全限定的模块名称(例如,ansible.builtin.file 而不是 file)。这可以确保任务的集合搜索顺序不会被用来解析模块。否则,可能会使用来自搜索路径中更早位置的集合中的模块,而并非预期。

移植自定义脚本

无重大变更