如何循环任务,每个任务都有另一个循环

How to loop over tasks with each task having another loop

我想在 var_1 上循环一些任务,并在每个任务中在 var_2 上循环。

我在这里尝试使用include_tasks,但不确定是否有更好的方法。

我可能错过了语法或者整个逻辑是错误的。我收到此错误: 错误! include_tasks 的无效选项:type_name、type_attr

关于如何获得所需输出的任何建议?

vars:
 var_1:
  - name: bla1
    attributes:
     - a
     - b
  - name: bla2
    attributes:
     - c
     - d
 var_2:
  - type: typ1
    typ_attr:
     - aa
     - bb
  - type: typ2
    typ_attr:
     - cc
     - dd

   #main.yml

    tasks:
      - include_tasks: supporting.yml type_name={{item.0.type}} type_attr = {{item.1}}
        loop: "{{ var_2|subelements('typ_attr') }}"

#supporting.yml

    - debug:
        msg: "name = {{item.0.name}}; nameattr = {{item.1}}; type = {{type_name}}; typeattr = {{type_attr}}
      loop: "{{var_1|subelements('attributes')}}"

期望的输出:

名字=bla1;名称属性=一个;类型 = typ1; typeattr = aa

名字=bla1;名称属性=一个;类型 = typ1; typeattr = bb

名字=bla1;名称属性=一个;类型 = typ2; typeattr = cc

名字=bla1;名称属性=一个;类型 = typ2; typeattr = dd

名字=bla1;名称属性 = b;类型 = typ1; typeattr = aa

名字=bla1;名称属性 = b;类型 = typ1; typeattr = bb

名字=bla1;名称属性 = b;类型 = typ2; typeattr = cc

名字=bla1;名称属性 = b;类型 = typ2; typeattr = dd

名字=bla2;名称属性 = c;类型 = typ1; typeattr = aa

名字=bla2;名称属性 = c;类型 = typ1; typeattr = bb

名字=bla2;名称属性 = c;类型 = typ2; typeattr = cc

名字=bla2;名称属性 = c;类型 = typ2; typeattr = dd

名字=bla2;名称属性 = d;类型 = typ1; typeattr = aa

名字=bla2;名称属性 = d;类型 = typ1; typeattr = bb

名字=bla2;名称属性 = d;类型 = typ2; typeattr = cc

名字=bla2;名称属性 = d;类型 = typ2; typeattr = dd

有必要在包含任务的循环中使用不同的loop_var。下面的任务完成了这项工作。

- include_tasks: supporting.yml
  loop: "{{ var_2|subelements('typ_attr') }}"

$ cat supporting.yml
- debug:
    msg: "name = {{ item1.0.name }};
          nameattr = {{ item1.1 }};
          type = {{ item.0.type }};
          typeattr = {{ item.1 }}"
  loop: "{{ var_1|subelements('attributes') }}"
  loop_control:
    loop_var: item1