Ansible-core 2.16 移植指南
本节讨论 ansible-core
2.15 和 ansible-core
2.16 之间的行为变化。
旨在帮助您更新您的剧本、插件和 Ansible 基础设施的其他部分,以便它们能够与该版本的 Ansible 一起使用。
我们建议您阅读本页以及 2.16 的 ansible-core 变更日志,以了解您可能需要进行哪些更新。
本文档是移植集合的一部分。移植指南的完整列表可以在 移植指南 中找到。
剧本
条件语句 - 由于在 ansible-core 2.16.1 中缓解了安全问题 CVE-2023-5764,带有嵌入式模板块的条件表达式可能会失败,并显示消息“
Conditional is marked as unsafe, and cannot be evaluated.
”,当嵌入式模板从不受信任的来源(如模块结果或标记为!unsafe
的变量)中查询数据时。带有嵌入式模板的条件语句在引用不受信任的数据时可能是恶意模板注入的来源,并且几乎总是可以重写,而无需使用嵌入式模板。剧本任务条件关键字(如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'