【发布时间】:2018-05-21 21:45:49
【问题描述】:
在 ansilbe 中使用 with_items 与 loops 有什么区别?
【问题讨论】:
标签: ansible
在 ansilbe 中使用 with_items 与 loops 有什么区别?
【问题讨论】:
标签: ansible
更新:最新的Documentation 列出了如下差异
- with_ 关键字依赖于查找插件 - 甚至项目都是查找。
- loop 关键字相当于with_list,是简单循环的最佳选择。
- loop 关键字不接受字符串作为输入,请参阅确保循环的列表输入:查询与查找。
- 一般来说,从 with_X 迁移到循环中介绍的任何 with_* 使用都可以更新为使用循环。
- 将 with_items 更改为循环时要小心,因为 with_items 执行了隐式的单级展平。您可能需要使用 使用循环 flatten(1) 以匹配确切的结果。
旧答案
根据docs,
2.5之前的Ansible主要使用with_关键字来创建循环,loop关键字基本类似于with_list。
所以基本上它们几乎相同,只有较新的版本在其语法中使用loop。从 2.7.12 版开始,两者都按预期工作,但鼓励使用 loop 关键字以实现未来兼容性。
【讨论】:
它们是不同的。将 with_items 更改为循环时要小心,因为 with_items 执行了隐式的单级展平。您可能需要使用 flatten with loop 来匹配确切的结果。查看官方文档示例。
【讨论】: