puppetlabs-rsync manages rsync clients, repositories, and servers as well as providing defines to easily grab data via rsync.
Manage rsync package
$package_ensure - any of the valid values for the package resource: present, absent, purged, held, latest
class { 'rsync': package_ensure => 'latest' }
get files via rsync
$source - source to copy from
$path - path to copy to, defaults to $name
$user - username on remote system
$purge - if set, rsync will use '--delete'
$recursive - if set, rsync will use '-r'
$links - if set, rsync will use '--links'
$hardlinks - if set, rsync will use '--hard-links'
$copylinks - if set, rsync will use '--copy-links'
$times - if set, rsycn will use '--times'
$include - string to be included
$exclude - string to be excluded
$keyfile - ssh key used to connect to remote host
$timeout - timeout in seconds, defaults to 900
$execuser - user to run the command (passed to exec)
$chown - USER:GROUP simple username/groupname mapping
$onlyif - condition to run the rsync command
get files via rsync
$source must be set
# get file 'foo' via rsync
rsync::get { '/foo':
source => "rsync://${rsyncServer}/repo/foo/",
require => File['/foo'],
}
put files via rsync
$source - source to copy from
$path - path to copy to, defaults to $name
$user - username on remote system
$purge - if set, rsync will use '--delete'
$exlude - string to be excluded
$keyfile - path to ssh key used to connect to remote host, defaults to /home/${user}/.ssh/id_rsa
$timeout - timeout in seconds, defaults to 900
put files via rsync
$source must be set
rsync::put { '${rsyncDestHost}:/repo/foo':
user => 'user',
source => "/repo/foo/",
}
sets up a rsync server
$path - path to data
$comment - rsync comment
$motd - file containing motd info
$read_only - yes||no, defaults to yes
$write_only - yes||no, defaults to no
$list - yes||no, defaults to no
$uid - uid of rsync server, defaults to 0
$gid - gid of rsync server, defaults to 0
$incoming_chmod - incoming file mode, defaults to 644
$outgoing_chmod - outgoing file mode, defaults to 644
sets up an rsync server
$path must be set
# setup default rsync repository
rsync::server::module{ 'repo':
path => $base,
require => File[$base],
}