Ansible中的双重迭代

Ansible中的双重迭代,ansible,Ansible,我如何通过字典列表进行迭代,并将字典键中的每个列表分配给带有_items的,然后通过该列表进行迭代:例如: - name: "Deploy" template: src: "myfile" dst: "{{ item }}/myfile" //"item" is "mypath1", "mypath2".. with_items: {{ item.

我如何通过字典列表进行迭代,并将字典键中的每个列表分配给带有_items的
,然后通过该列表进行迭代:例如:

- name: "Deploy"
  template:
    src: "myfile"
    dst: "{{ item }}/myfile"    //"item" is "mypath1", "mypath2"..
  with_items: {{ item.paths }}
  loop:
  - {group: "mygroup1", paths: ["mypath1", "mypath2"]}
  - {group: "mygroup2", paths: ["mypath3", "mypath4"]}
  when: "{{ item.group }} in group_names"
使用。例如,给定库存

shell>cat主机
[我的分组1]
srv1
[我的分组2]
srv2
剧本

shell>cat pb1.yml
-主机:srv1、srv2
任务:
-名称:部署
调试:
msg:{{inventory_hostname}}:在{{item.1}}/myfile创建myfile
带_子元素:
-“{{{u list}}”
-路径
时间:组名称中的item.0.group
变量:
_名单:
-{组:mygroup1,路径:[mypath1,mypath2]}
-{组:mygroup2,路径:[mypath3,mypath4]}
给予

msg:'srv1:在mypath1/myfile中创建myfile'
msg:'srv1:在mypath2/myfile中创建myfile'
msg:'srv2:在mypath3/myfile中创建myfile'
msg:'srv2:在mypath4/myfile中创建myfile'

你最好用字典,而不是单子。例如,下面的剧本使用一个简单的循环给出了相同的结果

shell>cat pb2.yml
-主机:srv1、srv2
任务:
-名称:部署
调试:
msg:{{inventory_hostname}}:在{{item}}/myfile创建myfile
循环:{{group_names | map('extract',dict)| flatten}
变量:
_格言:
mygroup1:[mypath1,mypath2]
mygroup2:[mypath3,mypath4]

但是,可行的方法是将数据放入组变量中。比如说

shell>cat group\u vars/mygroup1.yml
我的路径:[我的路径1,我的路径2]
外壳>cat组\u变量/mygroup2.yml
我的路径:[mypath3,mypath4]
下面的简单剧本给出了相同的结果

shell>cat pb3.yml
-主机:srv1、srv2
任务:
-名称:部署
调试:
msg:{{inventory_hostname}}:在{{item}}/myfile创建myfile
循环:{{my_path}}”