Forge Home


Csync2 implementation for puppet


9,455 latest version

4.5 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

  • 1.0.2 (latest)
  • 1.0.1
  • 1.0.0
  • 0.1.1
  • 0.1.0
  • 0.0.1
released Mar 13th 2015
This version is compatible with:
  • , , , , ,

Start using this module

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

Add this module to your Puppetfile:

mod 'jlondon-csync2', '1.0.2'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add jlondon-csync2
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install jlondon-csync2 --version 1.0.2

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.



jlondon/csync2 — version 1.0.2 Mar 13th 2015

Puppet Csync2

Here is what it can do, followed by an example configuration. You can use csync2 much like other tools (Unison, rsync, etc.), but what is nice about Csync2 is it is very fast and maintains a sqlite database of all file changes. This means it is capable of managing several hundred thousand files to be synced between multiple systems with very little lag between results (essentially a few seconds most of the time). Unlike rsync you can do multi-write style replication which is a requirement if you have several web-servers all being written to.

This module utilizes a resource collector on each defined node to build a sync configuration.

Example usage below, all configs go into your node configuration:

class {'csync2': }

@@csync2::groupnode { $::fqdn:
  group       => 'default', }

csync2::group { 'default':
  includes => ["path1", "path2"],
  excludes => ['*.svn'],
  auto     => 'younger',

Additionally, you will need to define a csync2 GROUP key. To do this you will need to have a csync2 installation somewhere. You will then use 'csync2 -k ' to write the key. Define this key on your puppet master or as a local file and define it in the key_source variable in the csync2::group.

For more general csync2 documentation, please refer to: