带嵌套多数组的Ansible循环序列

带嵌套多数组的Ansible循环序列,ansible,ansible-2.x,ansible-inventory,ansible-facts,ansible-template,Ansible,Ansible 2.x,Ansible Inventory,Ansible Facts,Ansible Template,我想与_嵌套但按顺序与2个不同的数组一起使用 设备: 数据:/dev/vdb 数据:/dev/vdc 主机名: 旅社1 旅社2 旅社3 我试着用这种方法 - name: debug debug: msg="{{ item[0] }} {{ item[1] }}" with_nested: - "{{ devices }}" - "{{ hostname }}" 但结果是这样的: - /dev/vdb h

我想与_嵌套但按顺序与2个不同的数组一起使用

设备:

  • 数据:/dev/vdb
  • 数据:/dev/vdc
主机名:

  • 旅社1
  • 旅社2
  • 旅社3
我试着用这种方法

- name: debug
  debug: msg="{{ item[0] }} {{ item[1] }}"
  with_nested:
    - "{{ devices }}"
    - "{{ hostname }}"
但结果是这样的:

- /dev/vdb host1
- /dev/vdb host2
- /dev/vdb host3
- /dev/vdc host1
- /dev/vdc host2
- /dev/vdc host3
我期望的结果是这样的:

- /dev/vdb host1
- /dev/vdc host1
- /dev/vdb host2
- /dev/vdc host2
- /dev/vdb host3
- /dev/vdc host3
    - name: debug
      debug:
        msg: "{{ item[0] }} {{ item[1] }}"
      with_nested:
        - "{{ hostname }}"
        - "{{ devices }}"

它是嵌套外观,相当于:

对于设备中的项目0: 对于主机名中的item1: 打印(项目0、项目1)

对于
devices
中的每个项目,它将迭代
hostname
中的所有项目……给出您描述的准确结果。您仍然会得到与预期相同的配对列表,只是顺序不同

如果使用嵌套将参数反转为
,如下所示:

- /dev/vdb host1
- /dev/vdc host1
- /dev/vdb host2
- /dev/vdc host2
- /dev/vdb host3
- /dev/vdc host3
    - name: debug
      debug:
        msg: "{{ item[0] }} {{ item[1] }}"
      with_nested:
        - "{{ hostname }}"
        - "{{ devices }}"
您将按所需顺序获得配对,尽管是交换的:


PLAY [localhost] *****************************************************************************************************************************************************************************

TASK [debug] *********************************************************************************************************************************************************************************
ok: [localhost] => (item=['host1', '/dev/vdb']) => {
    "msg": "host1 /dev/vdb"
}
ok: [localhost] => (item=['host1', '/dev/vdc']) => {
    "msg": "host1 /dev/vdc"
}
ok: [localhost] => (item=['host2', '/dev/vdb']) => {
    "msg": "host2 /dev/vdb"
}
ok: [localhost] => (item=['host2', '/dev/vdc']) => {
    "msg": "host2 /dev/vdc"
}
ok: [localhost] => (item=['host3', '/dev/vdb']) => {
    "msg": "host3 /dev/vdb"
}
ok: [localhost] => (item=['host3', '/dev/vdc']) => {
    "msg": "host3 /dev/vdc"
}

PLAY RECAP ***********************************************************************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0