Forge Home


This module installs s3ql and helps manage volumes


7,865 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.1.0 (latest)
  • 1.0.1
  • 1.0.0
released Jan 24th 2016
This version is compatible with:
  • , FreeBSD

Start using this module

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

Add this module to your Puppetfile:

mod 'brainsware-s3ql', '1.1.0'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add brainsware-s3ql
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install brainsware-s3ql --version 1.1.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.



brainsware/s3ql — version 1.1.0 Jan 24th 2016

Puppet Forge Build Status

Table of Contents

  1. Overview
  2. Setup - The basics of getting started with s3ql
  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 is a puppet module to manage s3ql installation, authentication configuration and mounts.


What s3ql affects

  • This module will install 2.x version of s3ql from upstream repositories if you so chose
  • It will run a python daemon as the owning user per filesystem mount
  • That daemon will connect to the cloud

Beginning with s3ql

puppet-s3ql cannot help you setup an S3 or Google Storage account, or take the prerequisite steps to be able to use them as backends.

This first iteration will not support an initial formatting so you'll have to do that, too. It does support creating authinfo files though.


First, let's install it:

# only on Ubuntu:
# apt::ppa { 'ppa:nikratio/s3ql': }
# everywhere:
include s3ql

Next, we can setup our authentication:

s3ql::authinfo { 'gs backend for www-data fluffy bucket':
  backend          => 'gs',
  storage_url      => 'gs://fluffy/example',
  backend_login    => 'oauth2',
  backend_password => 'actually a very long and secure oauth token',
  fs_passphrase    => 'also a very long and very secure passphrase for encrypting this filesystem',

And finally, we can mount it:

s3ql_mount { '/srv/web/example/htdocs/uploads':
  ensure      => 'present',
  owner       => 'www-data',
  group       => 'www-data',
  storage_url => 'gs://fluffy/example',



This class is only responsible for installing the s3ql package


Name of the s3ql package. Default: s3ql


Whether to install or remove, or keep the s3ql package in specific version. Default: present


Maybe some day s3ql will be easily installable via pip then you can override this parameter. Default: undef


This defined type creates ~/.s3ql/authinfo2 files, storing credentials to the various backends. It's basically just a very thin wrapper around ini_setting :)


Whether to add or remove this entry. Default: present




Owner, group and HOME have to be set. HOME should point to the fully-qualified path of ~/.s3ql. Default: 0, and /root/.s3ql


Whether to create the user's .s3ql home directory. Default: false


Which backend to configure. Can be gs, s3, etc...


The storage-url for which these credentials are valid.



The login and password. For gs there's a special backend-login oauth2 which activates OAuth authentication.


The passphrase with which this filesystem is encrypted.


s3ql_mount creates mount.s3ql mounts. It can be used with puppet resource.


The path to the mountpoint. Default: name


The storage-url to mount


The backend-login for the specified storage-url. If ommited, it will be read from authfile.


The backend-login for the specified storage-url. If ommited, it will be read from authfile.


The fs-passphrase for the specified storage-url. If ommited, it will be read from authfile.


Additional options passed to mount.s3ql when mounting this filesystem.


The owner this filesytem will belong to. (normalized to uid). Default: 0


The group this filesytem will belong to. (normalized to gid). Default: 0


The fully-qualified path to the ~/.s3ql home dir

This directory will be used cache directory, and as base for the authinfo2 searchpath.

This parameter is not entirely discoverable. It will default to $HOME/.s3ql, but this might be wrong for users who have no $HOME, for instance.


The backend used. This property is read-only.


Given the rather clumsy installation on RHEL (or rather: the lack of package repositories), this module will currently only work properly on:

  • Archlinux
  • Debian
  • FreeBSD
  • Gentoo
  • OS X
  • Ubuntu


If you find a way to install this module painfree under RHEL, I would very happily accept your patch! Please follow our guidlines in