Ansible-core 2.17 移植指南
本节讨论 ansible-core
2.16 和 ansible-core
2.17 之间的行为变化。
旨在帮助更新您的 playbook、插件和 Ansible 基础设施的其他部分,以便它们可以与此版本的 Ansible 一起工作。
我们建议您阅读此页面以及适用于 2.17 的 ansible-core 更改日志,以了解您可能需要进行的更新。
本文档是关于移植的集合的一部分。完整的移植指南列表可以在移植指南找到。
Playbook
条件语句 - 由于在 ansible-core 2.16.1 中缓解了安全问题 CVE-2023-5764,当嵌入式模板从不可信来源(如模块结果或标记为
!unsafe
的变量)获取数据时,带有嵌入式模板块的条件表达式可能会失败,并显示消息 “Conditional is marked as unsafe, and cannot be evaluated.
”。当引用不可信数据时,带有嵌入式模板的条件语句可能成为恶意模板注入的来源,并且几乎总是可以在不使用嵌入式模板的情况下重写。playbook 任务条件关键字(例如when
和until
)长期以来都会显示警告,不鼓励在条件语句中使用嵌入式模板;此警告已扩展到非任务条件语句,例如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+。
已弃用
无显著变化
模块
无显著变化
已移除的模块
以下模块不再存在
无显著变化
弃用通知
无显著变化
值得注意的模块变更
无显著变化
插件
无显著变化
移植自定义脚本
无显著变化
网络
无显著变化