Ansible-core 2.13 移植指南
本节讨论了 ansible-core 2.12 与 ansible-core 2.13 之间的行为变更。
本指南旨在帮助您更新 Playbook、插件以及 Ansible 基础设施的其他部分,以便它们能与此版本的 Ansible 协同工作。
我们建议您在阅读本页的同时,参考 ansible-core 2.13 变更日志 (Changelog),以了解您可能需要进行哪些更新。
本文档是移植系列指南的一部分。完整的移植指南列表可以在 移植指南 中找到。
Playbook
模板化 - 您不能再在 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.7 版本或 Python 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。
插件
无显著变更
移植自定义脚本
无显著变更
网络
无显著变更