Ansible-core 2.12 移植指南
本节讨论 ansible-core
2.11 和 ansible-core
2.12 之间的行为变化。
旨在帮助您更新您的剧本、插件和 Ansible 基础结构的其他部分,以便它们能够与 Ansible 的此版本一起工作。
建议您阅读此页以及 Ansible-core 2.12 版本变更日志,以了解您可能需要进行哪些更新。
本文档是关于移植的集合的一部分。完整的移植指南列表可以在 移植指南 中找到。
剧本
在调用任务并设置
async
时,在environment:
下设置ANSIBLE_ASYNC_DIR
已不再有效。改为使用 shell 配置变量async_dir
,例如设置ansible_async_dir
tasks:
- dnf:
name: '*'
state: latest
async: 300
poll: 5
vars:
ansible_async_dir: /path/to/my/custom/dir
已向模板环境添加
undef()
函数,用于直接在模板中创建未定义的变量。可选地,可以为旨在被覆盖的变量提供提示。
vars:
old: "{{ undef }}"
new: "{{ undef() }}"
new_with_hint: "{{ undef(hint='You must override this variable') }}"
Python 解释器发现
INTERPRETER_PYTHON
的默认值已更改为 auto
。INTERPRETER_PYTHON_FALLBACK
中的 Python 解释器列表已更改为优先使用 Python 3 而不是 Python 2。这两项更改的组合意味着新的默认行为是在远程主机上静默地优先使用 Python 3 而不是 Python 2。以前,如果解释器发现将使用 Python 3 但解释器设置为 /usr/bin/python
,则会发出弃用警告。
可以通过设置 ansible_interpreter_python_fallback
变量来更改 INTERPRETER_PYTHON_FALLBACK
的默认解释器列表。
有关更多详细信息,请参阅 解释器发现文档。
命令行
此版本需要控制器节点上的 Python 3.8。命令行脚本在较低的 Python 版本下将无法运行。
ansible-vault
不再支持PyCrypto
,需要cryptography
。
已弃用
此版本中已弃用目标节点上的 Python 2.6。
ansible-core
2.13 将删除对 Python 2.6 的支持。条件语句中的裸变量:
when
条件语句不再自动将字符串布尔值(例如"true"
和"false"
)解析为实际的布尔值。任何包含非空字符串的变量都被视为 true。这以前可以使用CONDITIONAL_BARE_VARS
配置选项(以及ANSIBLE_CONDITIONAL_BARE_VARS
环境变量)进行配置。此设置不再有任何作用。用户可以使用|bool
过滤器来解决此问题。
vars:
teardown: 'false'
tasks:
- include_tasks: teardown.yml
when: teardown | bool
- include_tasks: provision.yml
when: not teardown | bool
ActionBase
中的_remote_checksum()
方法已弃用。任何使用此方法的动作插件都应改为使用_execute_remote_stat()
。
模块
cron
现在需要在所有情况下都指定name
。cron
不再允许reboot
参数。改为使用special_time: reboot
。hostname
- 在 FreeBSD 上,如果永久主机名文件不存在,则before
结果将不再是"temporarystub"
。为了与其他系统保持一致,它将改为为空字符串""
。hostname
- 在 OpenRC 和基于 Solaris 的系统上,如果永久主机名文件不存在,则before
结果将不再是"UNKNOWN"
。为了与其他系统保持一致,它将改为为空字符串""
。pip
现在使用为 Ansible 模块的 Python 解释器安装的pip
Python 模块(如果可用),除非指定了executable
或virtualenv
。
已移除的模块
以下模块不再存在
无重大更改
弃用通知
无重大更改
值得注意的模块更改
无重大更改
插件
使用 Jinja2 < 2.10 的
unique
过滤器区分大小写,如果case_sensitive=False
则现在会一致地引发错误,而不是在case_sensitive=True
时引发错误。集合论过滤器(
intersect
、difference
、symmetric_difference
和union
)现在区分大小写。显式使用case_sensitive=False
以保持之前的行为。注意:对于 Jinja2 < 2.10,过滤器默认情况下已经区分大小写。现在,如果未指定选项,
password_hash
将使用passlib
的默认值。例如,bcrypt_sha256
现在默认使用“2b”格式,如果需要“2a”格式,则必须明确指定。
自定义脚本移植
无重大更改
网络
无重大更改