Puppet Class: restic

Defined in:
manifests/init.pp

Summary

Module to manage restic repositories via systemd service/timer.

Overview

Parameters:

  • package_ensure (String) (defaults to: 'present')

    Version for Restic to be installed

  • package_manage (Boolean) (defaults to: true)

    Enable Restic package management

  • package_name (String) (defaults to: 'restic')

    Name for Restic package

  • package_version (Optional[String[1]]) (defaults to: undef)

    Restic version when installing with the ‘url` method.

  • checksum (Optional[String[1]]) (defaults to: undef)

    Checksum of the Restic archive. Only applicable when using ‘install_method = ’url’‘.

  • install_method (Enum['package', 'url']) (defaults to: 'package')

    Install method to use.

  • repositories (Restic::Repositories) (defaults to: {})

    Hash of repositoriries

  • backup_flags (Variant[Array[String[1]],String[1]]) (defaults to: [])

    Default flags for ‘restic backup <flags>`. See `restic backup –help`

  • backup_path (Optional[Restic::Path]) (defaults to: undef)

    Default directory to backed up

  • backup_pre_cmd (Optional[Variant[Array[String[1]],String[1]]]) (defaults to: undef)

    Default command to run before ‘restic backup`

  • backup_post_cmd (Optional[Variant[Array[String[1]],String[1]]]) (defaults to: undef)

    Default command to run after ‘restic backup`

  • backup_timer (Optional[String[1]]) (defaults to: undef)

    Default systemd timer for backup see: wiki.archlinux.de/title/Systemd/Timers

  • backup_exit3_success (Boolean) (defaults to: false)

    Consider restic’s exit code 3 as success. restic.readthedocs.io/en/latest/040_backup.html#exit-status-codes

  • binary (Stdlib::Absolutepath) (defaults to: '/usr/bin/restic')

    Default path to the Restic binary

  • bucket (Optional[String]) (defaults to: undef)

    Default name for the Restic repository

  • enable_backup (Boolean) (defaults to: true)

    Default enable the backup service

  • enable_forget (Boolean) (defaults to: false)

    Default enable the forget service

  • enable_restore (Boolean) (defaults to: false)

    Default enable the restore service

  • forget (Restic::Forget) (defaults to: {})

    Default hash with ‘keep-*` => `value` to configure forget flags

  • forget_flags (Variant[Array[String[1]],String[1]]) (defaults to: [])

    Default flags for ‘restic forget <flags>`. See `restic forget –help`

  • forget_pre_cmd (Optional[Variant[Array[String[1]],String[1]]]) (defaults to: undef)

    Default command to run before ‘restic forget`

  • forget_post_cmd (Optional[Variant[Array[String[1]],String[1]]]) (defaults to: undef)

    Default command to run after ‘restic forget`

  • forget_timer (Optional[String[1]]) (defaults to: undef)

    Default systemd timer for forget see: wiki.archlinux.de/title/Systemd/Timers

  • global_flags (Variant[Array[String[1]],String[1]]) (defaults to: [])

    Default global flags for ‘restic <flags>`. See `restic –help`

  • group (String) (defaults to: 'root')

    Default group for systemd services

  • host (Optional[Variant[Sensitive[String],String]]) (defaults to: undef)

    Default hostname for the Restic repository

  • id (Optional[Variant[Sensitive[String],String]]) (defaults to: undef)

    Default S3 storage id for an S3 bucket

  • init_repo (Boolean) (defaults to: true)

    Default enable the initialization of the repository

  • key (Optional[Variant[Sensitive[String],String]]) (defaults to: undef)

    Default S3 storage key for an S3 bucket

  • password (Optional[Variant[Sensitive[String],String]]) (defaults to: undef)

    Default encryption password for the Restic repository

  • prune (Boolean) (defaults to: false)

    Default enable ‘–prune` flag for `restic forget`

  • restore_flags (Variant[Array[String[1]],String[1]]) (defaults to: [])

    Default flags for ‘restic restore <flags>`. See `restic restore –help`

  • restore_path (Optional[Stdlib::Absolutepath]) (defaults to: undef)

    Default directory used to restore a backup

  • restore_pre_cmd (Optional[Variant[Array[String[1]],String[1]]]) (defaults to: undef)

    command to run before execute restore Default command to run before ‘restic restore`

  • restore_post_cmd (Optional[Variant[Array[String[1]],String[1]]]) (defaults to: undef)

    command to run after execute restore Default command to run after ‘restic restore`

  • restore_snapshot (String[1]) (defaults to: 'latest')

    Default Restic snapshot id used by the restore

  • restore_timer (Optional[String[1]]) (defaults to: undef)

    Default systemd timer for restore see: wiki.archlinux.de/title/Systemd/Timers

  • type (Restic::Repository::Type) (defaults to: 's3')

    Default name for the Restic repository. Only S3 supported

  • user (String[1]) (defaults to: 'root')

    Default user for systemd services



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# File 'manifests/init.pp', line 121

class restic (
  ##
  ## package
  ##
  String                              $package_ensure   = 'present',
  Boolean                             $package_manage   = true,
  String                              $package_name     = 'restic',
  Optional[String[1]]                 $package_version  = undef,
  Optional[String[1]]                 $checksum         = undef,
  Enum['package', 'url']              $install_method   = 'package',

  ##
  ## backups/forgets/restores
  ##
  Restic::Repositories                $repositories     = {},

  ##
  ## default values for restic::resositories
  ##
  Variant[Array[String[1]],String[1]]           $backup_flags         = [],
  Optional[Restic::Path]                        $backup_path          = undef,
  Optional[Variant[Array[String[1]],String[1]]] $backup_pre_cmd       = undef,
  Optional[Variant[Array[String[1]],String[1]]] $backup_post_cmd      = undef,
  Optional[String[1]]                           $backup_timer         = undef,
  Boolean                                       $backup_exit3_success = false,
  Stdlib::Absolutepath                          $binary               = '/usr/bin/restic',
  Optional[String]                              $bucket               = undef,
  Boolean                                       $enable_backup        = true,
  Boolean                                       $enable_forget        = false,
  Boolean                                       $enable_restore       = false,
  Restic::Forget                                $forget               = {},
  Variant[Array[String[1]],String[1]]           $forget_flags         = [],
  Optional[Variant[Array[String[1]],String[1]]] $forget_pre_cmd       = undef,
  Optional[Variant[Array[String[1]],String[1]]] $forget_post_cmd      = undef,
  Optional[String[1]]                           $forget_timer         = undef,
  Variant[Array[String[1]],String[1]]           $global_flags         = [],
  String                                        $group                = 'root',
  Optional[Variant[Sensitive[String],String]]   $host                 = undef,
  Optional[Variant[Sensitive[String],String]]   $id                   = undef,
  Boolean                                       $init_repo            = true,
  Optional[Variant[Sensitive[String],String]]   $key                  = undef,
  Optional[Variant[Sensitive[String],String]]   $password             = undef,
  Boolean                                       $prune                = false,
  Variant[Array[String[1]],String[1]]           $restore_flags        = [],
  Optional[Stdlib::Absolutepath]                $restore_path         = undef,
  Optional[Variant[Array[String[1]],String[1]]] $restore_pre_cmd      = undef,
  Optional[Variant[Array[String[1]],String[1]]] $restore_post_cmd     = undef,
  String[1]                                     $restore_snapshot     = 'latest',
  Optional[String[1]]                           $restore_timer        = undef,
  Restic::Repository::Type                      $type                 = 's3',
  String[1]                                     $user                 = 'root',
) {
  contain restic::package
  contain restic::reload

  $repositories.each |$repository, $config| {
    restic::repository { $repository:
      * => $config,
    }

    Class['restic::package'] -> Restic::Repository[$repository] ~> Class['restic::reload']
  }
}