Ansible - 将文件集合获取到目的地而不复制远程主机的文件结构?

Dev*_*Bot 1 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 }}"
Run Code Online (Sandbox Code Playgroud)

如果2个远程主机(例如domainA.com和domainB.com)在各自的tmp/foo目录中有foo.txt和bar.txt,我希望主机目录上的最终结果是:

/tmp/foo_files/

foo.txt

栏.txt

我从上面运行得到的是主机目录包含:

/tmp/foo_files/domainA.com/tmp/foo/foo.txt

/tmp/foo_files/domainB.com/tmp/foo/bar.txt

mas*_*eyb 6

您可以flat: yesfetch任务中设置,参考。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 }}"
Run Code Online (Sandbox Code Playgroud)