如何在Ansible循环中遍历列表的每两个元素?
解决方案
可以使用Ansible内置的batch过滤器,将磁盘列表按每2个元素一组拆分,再循环处理每组数据。
完整Playbook示例
--- - hosts: all vars: disks: - sdc - sdd - sde - sdf tasks: - name: 每次迭代处理两个磁盘的组合 shell: echo '/dev/{{ item[0] }} + /dev/{{ item[1] }}' loop: "{{ disks | batch(2) }}"
关键说明
batch(2)过滤器会把原列表拆分为多个长度为2的子列表,示例中的列表拆分后结果为[['sdc', 'sdd'], ['sde', 'sdf']]- 循环时
item变量对应单个子列表,通过item[0]和item[1]可分别获取组内的两个磁盘名称 - 执行后第一次循环输出
/dev/sdc + /dev/sdd,第二次输出/dev/sde + /dev/sdf,完全匹配需求
内容的提问来源于stack exchange,提问作者mocart
相关产品推荐
相关产品推荐

