Table of Contents

  1. Description

  2. Setup - The basics of getting started with etckeeper

  3. Usage - Configuration options and additional functionality

  4. Reference - An under-the-hood peek at what the module is doing and how

  5. Limitations - OS compatibility, etc.

  6. Development - Guide for contributing to the module


This module ensures that etckeeper is set up and configured to keep the /etc directory under version control.

RHEL/CentOS, Ubuntu, Debian, SLES and Arch Linux are supported using Puppet 5 or later.


What etckeeper affects

This module will remove any VCS state directories under /etc for any supported VCS except the one chosen to be used. So for example, if you're using git, any directories matching /etc/.bzr, /etc/.hg and /etc/_darcs will be removed. This also means that if you change VCS you will lose any previous commits.

Setup Requirements

On RHEL/CentOS platforms you will need to have access to the EPEL repository by using puppet/epel or by other means.

Beginning with etckeeper

In the very simplest case, you can just include the following:

include etckeeper


For example to configure etckeeper to use a specific VCS instead of going with the default:

class { 'etckeeper':
  vcs => 'bzr',


The reference documentation is generated with puppet-strings and the latest version of the documentation is hosted at and available also in the


This module has been built on and tested against Puppet 5 and higher.

The module has been tested on:

  • Red Hat/CentOS Enterprise Linux 6/7

  • Ubuntu 14.04/16.04

  • Debian 7/8

It should also work on SLES 11 & 12 and Arch Linux.


The module relies on PDK and has both rspec-puppet and beaker-rspec tests. Run them with:

$ bundle exec rake spec
$ PUPPET_INSTALL_TYPE=agent PUPPET_INSTALL_VERSION=x.y.z bundle exec rake beaker:<nodeset>

Please log issues or pull requests at github.