Ansible copy files with wildcard?

In my files directory I have various files, with a similar name structure:

data-example.zip
data-precise.zip
data-arbitrary.zip
data-collected.zip

I would like to transfer all of these files in the /tmp directory of my remote machine using Ansible without specifying each file name explicitly. In other words I would like to transfer every file that stars with "data-".

What is the correct way to do that? In a similar thread, someone suggested the with_fileglob keyword, - but I couldn't get that to work. Can someone provide me an example on how to accomplish said task?

2 Answers

Method 1: Find all files, store them in a variable and copy them to destination.

- hosts: lnx tasks: - find: paths="/source/path" recurse=yes patterns="data*" register: files_to_copy - copy: src={{ item.path }} dest=/dear/dir owner: root mode: 0775 with_items: "{{ files_to_copy.files }}"

Use remote_src: yes to copy file in remote machine from one path to another.

Ansible documentation

Method 2: Fileglob

Fileglob allows using patterns to match files and directories

- name: Copy each file over that matches the given pattern copy: src: "{{ item }}" dest: "/etc/fooapp/" owner: "root" mode: 0600 with_fileglob: - "/playbooks/files/fooapp/*"

Ansible documentation

6

Shortly after posting the question I actually figured it out myself. The with_fileglob keyword is the way to do it.

- name: "Transferring all data files" copy: src: "{{ item }}" dest: /tmp/ with_fileglob: "data-*"

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like