diff --git a/lib/ansible/modules/files/synchronize.py b/lib/ansible/modules/files/synchronize.py index 262597729ab..b06e3b62593 100644 --- a/lib/ansible/modules/files/synchronize.py +++ b/lib/ansible/modules/files/synchronize.py @@ -176,6 +176,8 @@ notes: are what was expected. - To exclude files and directories from being synchronized, you may add C(.rsync-filter) files to the source directory. + - rsync daemon must be up and running with correct permission when using + rsync protocol in source or destination path. author: "Timothy Appnel (@tima)" @@ -185,6 +187,22 @@ EXAMPLES = ''' # Synchronization of src on the control machine to dest on the remote hosts synchronize: src=some/relative/path dest=/some/absolute/path +# Synchronization using rsync protocol (push) +synchronize: src=some/relative/path/ dest=rsync://somehost.com/path/ + +# Synchronization using rsync protocol (pull) +synchronize: mode=pull src=rsync://somehost.com/path/ dest=/some/absolute/path/ + +# Synchronization using rsync protocol on delegate host (push) +synchronize: > + src=/some/absolute/path/ dest=rsync://somehost.com/path/ + delegate_to: delegate.host + +# Synchronization using rsync protocol on delegate host (pull) +synchronize: > + mode=pull src=rsync://somehost.com/path/ dest=/some/absolute/path/ + delegate_to: delegate.host + # Synchronization without any --archive options enabled synchronize: src=some/relative/path dest=/some/absolute/path archive=no @@ -389,10 +407,14 @@ def main(): if ssh_args: ssh_opts = '%s %s' % (ssh_opts, ssh_args) - if dest_port != 22: - cmd += " --rsh '%s %s %s -o Port=%s'" % (ssh, private_key, ssh_opts, dest_port) - else: - cmd += " --rsh '%s %s %s'" % (ssh, private_key, ssh_opts) # need ssh param + if source.startswith('rsync://') and dest.startswith('rsync://'): + module.fail_json(msg='either src or dest must be a localhost', rc=1) + + if not source.startswith('rsync://') and not dest.startswith('rsync://'): + if dest_port != 22: + cmd += " --rsh 'ssh %s %s -o Port=%s'" % (private_key, ssh_opts, dest_port) + else: + cmd += " --rsh 'ssh %s %s'" % (private_key, ssh_opts) # need ssh param if rsync_path: cmd = cmd + " --rsync-path=%s" % (rsync_path)