Ansible-在不复制远程主机文件结构的情况下将文件集合提取到目标位置?

时间:2019-01-11 18:22:49

标签: ansible

我有一部剧本正在执行以下操作,将所有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

1 个答案:

答案 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 }}"