我不确定我是否采用正确的方法,但是我有下一个问题。
我需要一个简单的任务,例如:
- name: Copying files
template:
src: "{{ item[1] }}.j2"
dest: "{{ path }}/{{ item[0] }}/{{ item[1] }}"
with_nested:
- [ 'env1' , 'env2' ]
- [ 'file1' , 'file2']
实际结果:
/path/env1/file1
/path/env1/file2
/path/env2/file1
/path/env2/file2
预期结果:
/path/env1/file1
/path/env2/file2
我只需要file1在目录env1中生成模板,而file2在env2中生成模板。 我无法使用简单的“ with_items”来完成此操作,因为我要迭代2个项目,目录名称和文件名称。
我敢肯定有一种方法可以正确地做到这一点。
预先感谢
答案 0 :(得分:0)
使用zip过滤器。下面的游戏
- hosts: localhost
vars:
list1: [ 'env1' , 'env2' ]
list2: [ 'file1' , 'file2']
tasks:
- debug:
msg: "/path/{{ item.0 }}/{{ item.1 }}"
loop: "{{ list1|zip(list2)|list }}"
给予(grep msg):
"msg": "/path/env1/file1"
"msg": "/path/env2/file2"
答案 1 :(得分:0)
您可以尝试按照以下步骤获得预期结果:
- name: Copying files
template:
src: "{{ item[1] }}.j2"
dest: "{{ path }}/{{ item[0] }}/{{ item[1] }}"
with_together:
- [ 'env1' , 'env2' ]
- [ 'file1' , 'file2']