Ansible-core 2.13 移植指南

本节讨论 ansible-core 2.12 和 ansible-core 2.13 之间的行为更改。

旨在帮助更新您的 Playbook、插件和 Ansible 基础设施的其他部分,以便它们能够与此版本的 Ansible 一起使用。

我们建议您阅读此页面以及ansible-core 2.13 的变更日志,以了解您可能需要进行的更新。

本文档是关于移植的集合的一部分。完整的移植指南列表可以在移植指南中找到。

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 版本 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

插件

没有值得注意的更改

移植自定义脚本

没有值得注意的更改

网络

没有值得注意的更改