Best option would probably to use the synchronize
module.
synchronize is a wrapper around the rsync command, meant to make common tasks with rsync easier.
Whereas the copy
module copies files using Python and is limited in its functionality. There is a Note in the
copy module documentation:
The “copy” module recursively copy facility does not scale to lots (>hundreds) of files. For alternative, see synchronize module, which is a wrapper around rsync.
With the synchronize
module it is possible to pass exclude
patterns via rsync_opts
to the rsync
command being executed by Ansible.
# Synchronize passing in extra rsync options
synchronize:
src: /tmp/helloworld
dest: /var/www/helloword
rsync_opts:
- "--exclude=.git"
But the synchronize
module has some caveats. Like the the requirement of rsync
installed on local and remote machine. That's why I wouldn't use it when not needed.