Note
This module is supported by the Puppet community. We expect it to be of the same high
quality as our own Supported modules, but it does not qualify for Puppet Support plans.
See the CODEOWNERS
file for usernames of the maintainers.
- Module Description - What does the module do?
- Usage - Configuration options and additional functionality
- Reference - An under-the-hood peek at what the module is doing and how
- Limitations - OS compatibility, etc.
puppetlabs-rsync manages rsync clients, repositories, and servers as well as providing defines to easily grab data via rsync.
Install the latest version of rsync
class { 'rsync':
package_ensure => 'latest'
}
Get file 'foo' via rsync
rsync::get { '/foo':
source => "rsync:https://${rsyncServer}/repo/foo/",
require => File['/foo'],
}
Put file 'foo' on 'rsyncDestHost'
rsync::put { '${rsyncDestHost}:/repo/foo':
user => 'user',
source => "/repo/foo/",
}
Setup default rsync repository
rsync::server::module{ 'repo':
path => $base,
require => File[$base],
}
To disable default values for incoming_chmod
and outgoing_chmod
, and
do not add empty values to the resulting config, set both values to false
rsync::server::module { 'repo':
path => $base,
incoming_chmod => false,
outgoing_chmod => false,
require => File[$base],
}
rsync::put
, rsync::get
, and rsync::server::module
resources can be
configured using Hiera hashes. For example:
rsync::server::modules:
myrepo:
path: /mypath
incoming_chmod: false
outgoing_chmod: false
myotherrepo:
path: /otherpath
read_only: false
Classes:
Defined Types:
Manage the rsync package.
Ensure the for the rsync package. Any of the valid values for the package resource (present, absent, purged, held, latest) are acceptable.
Default value: 'installed'
Setting this to false stops the rsync package resource from being managed.
Default value: true
get files via rsync
Required
Source to copy from.
Path to copy to.
Default value: $name
Username on remote system
If set, rsync will use '--delete'
If set, rsync will use '-r'
If set, rsync will use '--links'
If set, rsync will use '--hard-links'
If set, rsync will use '--copy-links'
If set, rsync will use '--times'
String (or array of strings) paths for files to be excluded.
String (or array of strings) paths for files to be explicitly included.
If true
, exclude first and then include; the other way around if false
.
Default value: true
SSH key used to connect to remote host.
Timeout in seconds.
Default value: 900
User to run the command (passed to exec).
Default options to pass to rsync (-a).
USER:GROUP simple username/groupname mapping.
File and/or directory permissions.
Log file name.
Condition to run the rsync command.
put files via rsync
Required
Source to copy from.
Path to copy to.
Default value: $name
Username on target remote system.
If set, rsync will use '--delete'
String (or array of strings) paths for files to be excluded.
String (or array of strings) paths for files to be explicitly included.
If true
, exclude first and then include; the other way around if false
.
Default value: true
Path to SSH key used to connect to remote host.
Default value: '/home/${user}/.ssh/id_rsa'
Timeout in seconds.
Default value: 900
Default options to pass to rsync (-a)
Sets up a rsync server
Required
Path to data.
Rsync comment.
File containing motd info.
PID file. Defaults to /var/run/rsyncd.pid. The pid file parameter won't be applied if set to "UNSET"; rsyncd will not use a PID file in this case.
yes||no
Default value: 'yes'
yes||no
Default value: 'no'
yes||no
Default value: 'no'
uid of rsync server
Default value: 0
gid of rsync server
Default value: 0
Incoming file mode
Default value: '644'
Outgoing file mode
Default value: '644'
Maximum number of simultaneous connections allowed
Default value: 0
File used to support the max connections parameter. Only needed if max_connections > 0.
Default value: '/var/run/rsyncd.lock'
Path to the file that contains the username:password pairs used for authenticating this module.
List of usernames that will be allowed to connect to this module (must be undef or an array).
List of patterns allowed to connect to this module (rsyncd.conf man page for details, must be undef or an array).
List of patterns allowed to connect to this module (rsyncd.conf man page for details, must be undef or an array).
Parameter enables per-file logging of downloads and uploads in a format somewhat similar to that used by ftp daemons.
This parameter allows you to specify the format used for logging file transfers when transfer logging is enabled. See the rsyncd.conf man page for more details.
List of rsync command line options that will be refused by your rsync daemon.
$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'
$exclude - string (or array) to be excluded
$include - string (or array) to be included
$exclude_first - if 'true' (default) then first exclude and then include; the other way around if 'false'
$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
$options - default options to pass to rsync (-a)
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
$use_chroot - yes||no, defaults to yes
$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
$numeric_ids - don't resolve uids to usernames, defaults to yes
$incoming_chmod - incoming file mode, defaults to 644
$outgoing_chmod - outgoing file mode, defaults to 644
$max_connections - maximum number of simultaneous connections allowed, defaults to 0
$timeout - disconnect client after X seconds of inactivity, defaults to 0
$lock_file - file used to support the max connections parameter, defaults to /var/run/rsyncd.lock only needed if max_connections > 0
$secrets_file - path to the file that contains the username:password pairs used for authenticating this module
$auth_users - list of usernames that will be allowed to connect to this module (must be undef or an array)
$hosts_allow - list of patterns allowed to connect to this module (man 5 rsyncd.conf for details, must be undef or an array)
$hosts_deny - list of patterns allowed to connect to this module (man 5 rsyncd.conf for details, must be undef or an array)
$transfer_logging - parameter enables per-file logging of downloads and uploads in a format somewhat similar to that used by ftp daemons.
$log_file - log messages to the indicated file rather than using syslog
$log_format - This parameter allows you to specify the format used for logging file transfers when transfer logging is enabled. See the rsyncd.conf documentation for more details.
$refuse_options - list of rsync command line options that will be refused by your rsync daemon.
$include - list of files to include
$include_from - file containing a list of files to include
$exclude - list of files to exclude
$exclude_from - file containing a list of files to exclude
$dont_compress - disable compression on matching files
$ignore_nonreadable - This tells the rsync daemon to completely ignore files that are not readable by the user.
sets up an rsync server
$path must be set
# setup default rsync repository
rsync::server::module{ 'repo':
path => $base,
require => File[$base],
}
To disable default values for incoming_chmod
and outgoing_chmod
, and
do not add empty values to the resulting config, set both values to false
rsync::server::module { 'repo':
path => $base,
incoming_chmod => false,
outgoing_chmod => false,
require => File[$base],
}
rsync::put
, rsync::get
, and rsync::server::module
resources can be
configured using Hiera hashes. For example: