Forge Home


Puppet module to create apt repositories with reprepro


299 latest version

5.0 quality score

Version information

  • 4.0.4 (latest)
  • 4.0.3
  • 4.0.2
released Sep 19th 2021
This version is compatible with:
  • Puppet Enterprise 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x, 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x, 2017.3.x, 2017.2.x, 2016.4.x
  • Puppet >= 4.10.0 < 8.0.0
  • Debian

Start using this module

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

Add this module to your Puppetfile:

mod 'cirrax-reprepro', '4.0.4'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add cirrax-reprepro
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install cirrax-reprepro --version 4.0.4

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.



cirrax/reprepro — version 4.0.4 Sep 19th 2021

reprepro puppet module

Build Status Puppet Forge Puppet Forge Puppet Forge Puppet Forge

Table of Contents

  1. Overview
  2. Usage
  3. PGP signing
  4. Reference
  5. Contribuiting
  6. Authors and Credits


This module assists with creating a local apt repository using reprepro.


Supports the followin usecases:

  • create a local repository for uploading packages with dput
  • create a local mirror of a repository (or part of a repository) eg. mirror of puppet packages from Puppetlabs.

Example usage with hiera

This example creates a private repository and start apache to provide the apt repositories.

include reprepro
include apache::vhosts
  architectures: 'amd64 source'
  components: 'main'
  deb_indices: 'Packages Release . .gz .bz2 .xz'
  dsc_indices: 'Sources Release . .gz .bz2 .xz'
  # sign_with: '000000KEYID00000'  # see chapter PGP signing
  install_cron: false
  not_automatic: 'yes'

# create one or more repositories:
      - 'basedir .'
        origin: 'my-packages'
        description: 'whatever the description should describe'
        label: 'my-packages'
        suite: 'local'

    port: '80'
    docroot: '/var/www/'

Example usage as puppet manifest

This example creates a private repository and start apache to provide the apt repositories.

# Main reprepro class
class { 'reprepro':
  basedir => $basedir,

# Set up a repository
reprepro::repository { 'localpkgs':
  options => ['basedir .'],

# Create a distribution within that repository
reprepro::distribution { 'precise':
  repository    => 'localpkgs',
  origin        => 'Foobar',
  label         => 'Foobar',
  suite         => 'precise',
  architectures => 'amd64 i386',
  components    => 'main contrib non-free',
  description   => 'Package repository for local site maintenance',
  # sign_with   => '000000KEYID00000'  # see chapter PGP signing
  not_automatic => 'No',
  install_cron  => false,

# Set up apache
class { 'apache': }

# Make your repo publicly accessible
apache::vhost { 'localpkgs':
  port           => '80',
  docroot        => '/var/lib/apt/repo/localpkgs',
  manage_docroot => false,
  servername     => '',

PGP signing

If you like to use PGP (and you should do that !) to let reprepro sign the contents of your repositories you have to create and install the PGP key to use manually. The following shell commands show howto create a PGP key for reprepro:

# become the reprepro user:
$ su - reprepro

# Create a pgp key:
$ gpg --gen-key --pinentry-mode loopback

Note: if you protect your key with a passphrase, you have to manage packages manually in order to enter the passphrase.

Note2: --pinentry-mode loopback is needed since we used su to become the reprepro user.

By referencing the key ID with the parameter sign_with of the distribution resources, reprepro will use the key to sign.


All classes and reources are documented in theire respective code file. For information on classes, types and functions see the


Please report bugs and feature request using GitHub issue tracker.

For pull requests, it is very much appreciated to check your Puppet manifest with puppet-lint and the available spec tests in order to follow the recommended Puppet style guidelines from the Puppet Labs style guide.

Authors and Credits

This module was based off of the existing work done by saz, camptocamp and desc.

See the list of contributors for a list of all contributors.