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。
完整的移植指南列表可以在 移植指南 中找到。
剧本 (Playbook)
修复了布尔关键词上的一个错误,该错误导致随机字符串返回“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
。
已弃用
Windows Server 2008 和 2008 R2 将不再在下一个 Ansible 版本中受支持或测试,请参阅 Server 2008、2008 R2 和 Windows 7 是否受支持?。
模块 (Modules)
警告
此页面上的链接可能并非指向模块的最新版本。我们将尽快更新它们。
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
参数。dnf
和yum
- 从 2.10.1 版本开始,dnf
模块(以及当它使用dnf
时yum
操作)现在可以正确验证包的 GPG 签名 (CVE-2020-14365)。如果您看到类似于Failed to validate GPG signature for [package name]
的错误,请确保您已导入正在使用的 DNF 存储库和/或包的正确 GPG 密钥。一种方法是使用rpm_key
模块。尽管我们不鼓励这样做,但在某些情况下,可能需要禁用 GPG 检查。这可以通过在您的dnf
或yum
任务中显式添加disable_gpg_check: yes
来实现。
值得注意的模块更改
使用
add_file_common_args=True
创建的 Ansible 模块添加了许多未记录的参数,这些参数主要用于简化某些动作插件的实现。未记录的参数src
、follow
、force
、content
、backup
、remote_src
、regexp
、delimiter
和directory_mode
现在不再添加。依赖于添加这些选项的模块需要自行指定它们。当运行 Ansible 模块时,Ansible 不再查找当前工作目录(通常是
remote_user
的主目录)中的 Python 模块。这是为了修复在 OpenBSD 上成为非特权用户的问题,并减轻当前工作目录可被恶意用户写入的任何攻击媒介。将运行 Ansible 模块所需的任何 Python 模块安装在系统范围的位置或另一个目录中,该目录位于remote_user
的$PYTHONPATH
中,并且可由become_user
读取。
插件 (Plugins)
查找插件名称大小写敏感性
在 Ansible
2.10
之前,作为参数传递给lookup()
函数的查找插件名称被视为不区分大小写,这与通过with_<lookup_name>
调用的查找相反。2.10
使lookup()
和with_
都区分大小写。
值得注意的插件更改
集合中的缓存插件可用于缓存来自清单插件的数据。以前,集合中的缓存插件只能用于事实缓存。
一些来自
FILE_COMMON_ARGUMENTS
的未记录参数已被移除;使用这些参数的插件,特别是动作插件,需要进行调整。已移除的未记录参数为src
、follow
、force
、content
、backup
、remote_src
、regexp
、delimiter
和directory_mode
。
执行模块的动作插件应使用完全限定的模块名称
调用模块的动作插件应尽可能传递显式、完全限定的模块名称到
_execute_module()
(例如,ansible.builtin.file
而不是file
)。这确保不会查阅任务的集合搜索顺序来解析模块。否则,在搜索路径中较早的集合中的模块可能会在不需要时使用。
移植自定义脚本
没有显著变化