Ansible 复制文件并从两个列表中获取文件的源和目标名称
Ansible copy files and getting sources and destinations names of file from two lists
我必须复制并重命名多个文件
我将源文件名和目标文件名列表存储在两个列表中:
这里是 sources_files 列表:
sources_files:
- /path1/sourceFileOne.txt
- /path2/sourceFileTwo.txt
...
- /pathN/fileN.txt
这里是 destination_files 列表:
destination_files:
- /path1/destFileOne.txt
- /path2/destFileTwo.txt
...
- /pathN/destfileN.txt
现在我希望我的复制任务执行从源文件到目标文件
的复制
/path1/destFileOne.txt
-> /path1/sourceFileOne.txt
我试过循环使用“with_nested”
- name: Rename or copy sources files to new names and paths
copy:
remote_src: True
src: "{{ item[0] }}"
dest: "{{ item[1] }}"
when:
- ansible_host in groups[SERVER]
with_nested:
- "{{sources_files}}"
- "{{destination_files}}"
但这似乎无法正常工作,因为该副本最终始终是最后一个目标文件的内容
建议 ?
您可能需要 with_together
或 zip
过滤器的数据结构方式。
- name: Rename or copy sources files to new names and paths
copy:
remote_src: True
src: "{{ item[0] }}"
dest: "{{ item[1] }}"
when:
- ansible_host in groups[SERVER]
loop: "{{ sources_files|zip(destination_files) }}"
话虽如此,我想知道是否不维护两个独立的
列出将它们组合起来更有意义,例如:
copy_files:
- src: /src/file1
dst: /dst/file1
- src: /src/file2
dst: /dst/file2
这可以降低您的两个列表最终不同步的可能性。
鉴于该数据结构,您的任务将如下所示:
- name: Rename or copy sources files to new names and paths
copy:
remote_src: True
src: "{{ item.src }}"
dest: "{{ item.dst }}"
when:
- ansible_host in groups[SERVER]
loop: "{{ copy_files }}"
我必须复制并重命名多个文件
我将源文件名和目标文件名列表存储在两个列表中:
这里是 sources_files 列表:
sources_files:
- /path1/sourceFileOne.txt
- /path2/sourceFileTwo.txt
...
- /pathN/fileN.txt
这里是 destination_files 列表:
destination_files:
- /path1/destFileOne.txt
- /path2/destFileTwo.txt
...
- /pathN/destfileN.txt
现在我希望我的复制任务执行从源文件到目标文件
的复制/path1/destFileOne.txt
-> /path1/sourceFileOne.txt
我试过循环使用“with_nested”
- name: Rename or copy sources files to new names and paths
copy:
remote_src: True
src: "{{ item[0] }}"
dest: "{{ item[1] }}"
when:
- ansible_host in groups[SERVER]
with_nested:
- "{{sources_files}}"
- "{{destination_files}}"
但这似乎无法正常工作,因为该副本最终始终是最后一个目标文件的内容
建议 ?
您可能需要 with_together
或 zip
过滤器的数据结构方式。
- name: Rename or copy sources files to new names and paths
copy:
remote_src: True
src: "{{ item[0] }}"
dest: "{{ item[1] }}"
when:
- ansible_host in groups[SERVER]
loop: "{{ sources_files|zip(destination_files) }}"
话虽如此,我想知道是否不维护两个独立的 列出将它们组合起来更有意义,例如:
copy_files:
- src: /src/file1
dst: /dst/file1
- src: /src/file2
dst: /dst/file2
这可以降低您的两个列表最终不同步的可能性。
鉴于该数据结构,您的任务将如下所示:
- name: Rename or copy sources files to new names and paths
copy:
remote_src: True
src: "{{ item.src }}"
dest: "{{ item.dst }}"
when:
- ansible_host in groups[SERVER]
loop: "{{ copy_files }}"