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`

  • max_cpus (Optional[Integer[1]]) (defaults to: undef)

    Limit the number of CPU cores restic can use by setting the env variable GOMAXPROCS

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

    Default path to the file containing the Google Cloud service account credentials which allows access to the bucket. Need to be downloaded from Google Cloud see: cloud.google.com/iam/docs/service-account-creds

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

    Default repository name used in Google Cloud Storage buckets

  • 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

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

    The port used to connect with sft. If the port is 22, this does not need to be filled in as Restic automatically uses this port

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

    The path to the repository on the SFTP server

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

    The user who connects to the SFTP repository

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

    Default name for the Restic repository. s3, gs, rest and sftp are supported.

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

    Default user for systemd services



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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
# File 'manifests/init.pp', line 142

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::repositories
  ##
  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         = [],
  Optional[Integer[1]]                          $max_cpus             = undef,
  Optional[Stdlib::Absolutepath]                $gcs_credentials_path = undef,
  Optional[Variant[Sensitive[String],String]]   $gcs_project_id       = undef,
  Optional[Variant[Sensitive[String],String]]   $gcs_repository       = undef,
  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,
  Optional[Variant[Sensitive[String],String]]   $sftp_port            = undef,
  Optional[Variant[Sensitive[String],String]]   $sftp_repository      = undef,
  Optional[Variant[Sensitive[String],String]]   $sftp_user            = undef,
  Restic::Repository::Type                      $type                 = 's3',
  String[1]                                     $user                 = 'root',
) {
  contain restic::package

  $repositories.each |$repository, $config| {
    restic::repository { $repository:
      *       => $config,
      require => Class['restic::package'],
    }
  }
}