Ansible-core 2.13 移植指南
本节讨论 ansible-core
2.12 和 ansible-core
2.13 之间的行为变更。
它旨在帮助更新您的剧本、插件和 Ansible 基础设施的其他部分,使其与此版本的 Ansible 兼容。
建议您阅读此页面以及 2.13 的 ansible-core 变更日志,以了解您可能需要进行的更新。
本文档是移植集合的一部分。完整的移植指南列表可以在 移植指南 中找到。
剧本
模板化 - 您不再可以在 jinja 模板之外执行算术和串联操作。以下语句需要重新编写才能生成
[1, 2]
- name: Prior to 2.13 debug: msg: '[1] + {{ [2] }}' - name: 2.13 and forward debug: msg: '{{ [1] + [2] }}'
由
AnsibleUndefined
对象表示的未定义变量的__repr__
方法的返回值已更改。{{ '%r'|format(undefined_variable) }}
在 2.13 中返回AnsibleUndefined(hint=None, obj=missing, name='undefined_variable')
,而在 2.12 及之前版本中则仅返回AnsibleUndefined
。finalize
方法不再在全局范围内公开供模板化使用。要将None
转换为空字符串,可以使用以下表达式:{{ value if value is not none }}
。
命令行
无重大变化
已弃用
无重大变化
模块
要使用 ansible-core 2.13 进行模块执行,您必须使用 Python 2 版本 2.7 或 Python 3 版本 3.5 或更高版本。任何使用
ansible.module_utils.basic
的代码在较低版本的 Python 上将无法正常运行。
已移除模块
以下模块不再存在
无重大变化
弃用通知
无重大变化
值得注意的模块变更
无重大变化
重大变更
ansible.module_utils.urls.fetch_url
现在将返回捕获的HTTPError
异常作为r
。HTTPError
是一个类似于响应的对象,可以为模块作者提供更多信息。模块应该依赖于info['status'] >= 400
来确定是否发生了错误,而不是使用r is None
或者在尝试r.read()
时捕获AttributeError
。
插件
无重大变化
移植自定义脚本
无重大变化
网络
无重大变化