如何在ANSIBLE中获取特定类型的文件(*.gz)

如何在ANSIBLE中获取特定类型的文件(*.gz),ansible,fetch,Ansible,Fetch,库存文件 user1@server1 ansible_ssh_user=user1 ansible_host=server1 user2@server2 ansible_ssh_user=user2 ansible_host=server2 test_plabook.yml --- - hosts: all tasks: - name: fetch files fetch: src: /path/to/src/dir/*.gz dest:

库存文件

user1@server1 ansible_ssh_user=user1 ansible_host=server1
user2@server2 ansible_ssh_user=user2 ansible_host=server2
test_plabook.yml

---
- hosts: all
  tasks:
    - name: fetch files
      fetch:
        src: /path/to/src/dir/*.gz
        dest: /path/to/dest/dir/{{ inventory_hostname}}/
        flat: yes

在源目录中,我有许多以.gz(*.gz)结尾的文件。我想把它们都拿来。我怎么做

您可以为匹配的远程文件列表分配一个变量,例如:

- name: Recursively find /tmp files older than 2 days
  find:
    paths: /path/to/src/dir/
    type: file
    patterns: "*.gz"
  register: files_to_fetch
或与:

- shell: "(cd /path/to/src/dir/ ; find . -type f -name '*.gz')"
  register: files_to_fetch
然后将获取应用于以下项目:

- name: fetch files
  fetch:
    src: /path/to/src/dir/{{item}}
    dest: /path/to/dest/dir/{{item}}
    flat: yes
  with_items: "{{ files_to_fetch }}"
或者,如果您选择了第二种解决方案:

  with_items: "{{ files_to_fetch.stdout_lines }}"

在我看来,第一种解决方案要好得多。

感谢rolf82提供的解决方案。我使用查找模块来解决我的案例