21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'modules/profile/manifests/ceph/backup/s3_local.pp', line 21
class profile::ceph::backup::s3_local (
WMFlib::Ensure $ensure = lookup('profile::ceph::backup::s3_local:ensure',default_value => absent),
Stdlib::Unixpath $backup_dir = lookup('profile::ceph::backup::s3_local:ensure',default_value => '/srv/postgresql_backups'),
Hash[String,Hash[String,String]] $sources = lookup('profile::ceph::backup::s3_local:sources',default_value => {}),
) {
ensure_packages('rclone')
file { $backup_dir:
ensure => directory,
owner => 'backup',
group => 'backup',
mode => '0600',
}
file { "${backup_dir}/rclone.conf":
ensure => $ensure,
owner => 'backup',
group => 'backup',
mode => '0600',
content => epp ('profile/ceph/backup/s3_local/rclone.conf.epp', {
sources => $sources,
}),
}
backup::set { 'data-platform-postgres-s3': }
systemd::timer::job { 'backup_s3_postgresql':
user => 'backup',
description => 'Create local copies of S3 buckets containing PostgreSQL backups to the local filesystem',
command => "/usr/bin/rclone -v --config ${backup_dir}/rclone.conf --exclude /rclone.conf sync everything: ${backup_dir}",
interval => {
'start' => 'OnCalendar',
'interval' => '*-*-* 00:00:00', # Every day at midnight
},
require => File["${backup_dir}/rclone.conf"],
}
}
|