我有一部剧本正在执行以下操作,将所有txt文件从远程主机目录复制到我的源目录中。
- name: Find files to copy
find: paths="/tmp/foo" recurse=no patterns="*.txt"
register: files_to_copy
- name: Copy files
fetch: src={{ item.path }} dest=/tmp/foo_files
with_items: "{{ files_to_copy.files }}"
如果2个远程主机(例如domainA.com和domainB.com)在其各自的tmp / foo目录中分别具有foo.txt和bar.txt,我希望在主机目录上的最终结果是:>
/ tmp / foo_files /
foo.txt
bar.txt
我从上面的运行中得到的是主机目录包含:
/tmp/foo_files/domainA.com/tmp/foo/foo.txt
/tmp/foo_files/domainB.com/tmp/foo/bar.txt
答案 0 :(得分:0)
您可以在flat: yes
任务中设置fetch
,参考。 https://docs.ansible.com/ansible/latest/modules/fetch_module.html
允许您覆盖将主机名/路径/到/文件附加到目标的默认行为。如果dest以'/'结尾,它将使用源文件的基本名称,类似于复制模块。显然,这仅在文件名唯一的情况下很方便。
- name: find files to copy
find:
paths: "/tmp/foo"
recurse: no
patterns: "*.txt"
register: files_to_copy
- name: Copy files
fetch:
src: {{ item.path }}
dest: /tmp/foo_files/
flat: yes
with_items: "{{ files_to_copy.files }}"