Ansible-core 2.17 移植指南

本节讨论 ansible-core 2.16 和 ansible-core 2.17 之间的行为变化。

旨在帮助您更新您的 playbook、插件和 Ansible 基础架构的其他部分,以便它们能够与该版本的 Ansible 兼容。

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

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

Playbook

  • 条件语句 - 由于在 ansible-core 2.16.1 中缓解了安全问题 CVE-2023-5764,包含嵌入式模板块的条件表达式可能会失败,并显示消息“Conditional is marked as unsafe, and cannot be evaluated.”,当嵌入式模板查询来自不受信任的来源(如模块结果或标记为 !unsafe 的变量)的数据时。包含嵌入式模板的条件语句在引用不受信任的数据时可能是恶意模板注入的来源,并且几乎总是可以重写为不使用嵌入式模板。Playbook 任务条件关键字(如 whenuntil)长期以来一直显示警告,不建议在条件语句中使用嵌入式模板;此警告已扩展到非任务条件语句,例如 assert 操作。

    - name: task with a module result (always untrusted by Ansible)
      shell: echo "hi mom"
      register: untrusted_result
    
    # don't do it this way...
    # - name: insecure conditional with embedded template consulting untrusted data
    #   assert:
    #     that: '"hi mom" is in {{ untrusted_result.stdout }}'
    
    - name: securely access untrusted values directly as Jinja variables instead
      assert:
        that: '"hi mom" is in untrusted_result.stdout'
    
  • any_errors_fatal - 当包含 rescue 部分的块中的任务在主机上失败时,rescue 部分将在所有主机上执行。发生这种情况是因为 any_errors_fatal 会自动使所有主机失败。

命令行

  • 不再支持 Python 2.7 和 Python 3.6 作为远程版本。目标执行现在需要 Python 3.7 及更高版本。

已弃用

没有显著变化

模块

没有显著变化

已移除的模块

以下模块已不存在

  • 没有显著变化

弃用通知

没有显著变化

值得注意的模块更改

没有显著变化

插件

没有显著变化

移植自定义脚本

没有显著变化

网络

没有显著变化