Forge Home

rsync

Manages rsync clients, repositories, and servers, & providies defines to easily grab data via rsync.

56,610 downloads

906 latest version

4.7 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Version information

  • 2.0.0 (latest)
  • 1.0.3
  • 1.0.2
  • 1.0.1
  • 1.0.0
  • 0.7.0
  • 0.6.4
  • 0.6.3
  • 0.6.2
  • 0.6.1
  • 0.6.0
  • 0.5.3
  • 0.5.2
  • 0.5.1
released Mar 8th 2024
This version is compatible with:
  • Puppet Enterprise 2023.8.x, 2023.7.x, 2023.6.x, 2023.5.x, 2023.4.x, 2023.3.x, 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x
  • Puppet >= 7.0.0 < 9.0.0
  • , ,

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'themeier-rsync', '2.0.0'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add themeier-rsync
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install themeier-rsync --version 2.0.0

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.

Download
Tags: rsync, rsyncd

Documentation

themeier/rsync — version 2.0.0 Mar 8th 2024

puppetlabs-rsync

puppetlabs-rsync manages rsync clients, repositories, and servers as well as providing defines to easily grab data via rsync.

Class: rsync

Manage rsync package

Parameters:

$package_ensure - any of the valid values for the package resource: present, absent, purged, held, latest
$manage_package - setting this to false stops the rsync package resource from being managed

Sample Usage:

class { 'rsync': package_ensure => 'latest' }

Definition: rsync::get

get files via rsync

Parameters:

$source        - source to copy from
$path          - path to copy to, defaults to $name
$user          - username on remote system
$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)
$options       - default options to pass to rsync (-a)
$onlyif        - condition to run the rsync command

Actions:

get files via rsync

Requires:

$source must be set

Sample Usage:

# get file 'foo' via rsync
rsync::get { '/foo':
  source  => "rsync://${rsyncServer}/repo/foo/",
  require => File['/foo'],
}

Definition: rsync::put

put files via rsync

Parameters:

$source  - source to copy from
$path    - path to copy to, defaults to $name
$user    - username on remote system
$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 - commandline options to pass to rsync (-a)

Actions:

put files via rsync

Requires:

$source must be set

Sample Usage:

rsync::put { '${rsyncDestHost}:/repo/foo':
  user    => 'user',
  source  => "/repo/foo/",
}

Definition: rsync::server::module

sets up a rsync server

Parameters:

$path               - path to data
$comment            - rsync comment
$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
$max_connections    - maximum number of simultaneous connections allowed, 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_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.
$ignore_nonreadable - This  tells  the  rsync daemon to completely ignore files that are not readable by the user.
$pre_xfer_exec      - command to be run before the transfer
$post_xfer_exec     - command to be run before the transfer
$dont_compress      - wildcard patterns that should not be compressed when pulling files from the daemon (man 5 rsyncd.conf for details, must be undef or an array)

Actions:

sets up an rsync server

Requires:

$path must be set

Sample Usage:

# 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

include rsync::server
rsync::server::module { 'repo':
  path           => $base,
  incoming_chmod => false,
  outgoing_chmod => false,
  require        => File[$base],
}

Configuring via Hiera

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