]>
Commit | Line | Data |
---|---|---|
d2f031ec | 1 | define profile::postgresql::backup_dump ( |
bd9c5fa8 IB |
2 | String $pg_user = "postgres", |
3 | String $pg_group = "postgres", | |
4 | Optional[Variant[String, Integer]] $pg_port = undef, | |
d2f031ec IB |
5 | ) { |
6 | $base_path = $title | |
7 | $pg_path = "$base_path/postgresql" | |
8 | $pg_backup_path = "$base_path/postgresql_backup" | |
9 | $pg_host = split($base_path, "/")[-1] | |
10 | ||
11 | ensure_packages(["python", "python-pip"]) | |
12 | ensure_resource("package", "pylog2rotate", { | |
13 | source => "git+https://github.com/avian2/pylog2rotate", | |
14 | ensure => present, | |
15 | provider => "pip3", | |
16 | require => Package["python-pip"], | |
17 | }) | |
18 | ||
19 | file { $pg_backup_path: | |
20 | ensure => directory, | |
21 | owner => $pg_user, | |
22 | group => $pg_group, | |
23 | mode => "0700", | |
24 | require => File[$base_path], | |
25 | } | |
26 | ||
bd9c5fa8 IB |
27 | if $pg_port and !empty($pg_port) { |
28 | $pg_port_arg = " -p $pg_port" | |
29 | } else { | |
30 | $pg_port_arg = "" | |
31 | } | |
32 | ||
d2f031ec IB |
33 | cron::job::multiple { "backup_psql_$pg_host": |
34 | ensure => "present", | |
35 | require => [File[$pg_backup_path], File[$pg_path]], | |
36 | jobs => [ | |
37 | { | |
bd9c5fa8 | 38 | command => "/usr/bin/pg_dumpall -h $pg_path$pg_port_arg -f $pg_backup_path/\$(date -Iseconds).sql", |
d2f031ec IB |
39 | user => $pg_user, |
40 | hour => "22,4,10,16", | |
41 | minute => 0, | |
42 | description => "Backup the database", | |
43 | }, | |
44 | { | |
45 | command => "/usr/bin/rm -f $(ls -1 $pg_backup_path/*.sql | grep -v 'T22:' | sort -r | sed -e '1,12d')", | |
46 | user => $pg_user, | |
47 | hour => 3, | |
48 | minute => 0, | |
49 | description => "Cleanup the database backups", | |
50 | }, | |
51 | { | |
52 | command => "cd $pg_backup_path ; /usr/bin/rm -f $(ls -1 *T22*.sql | log2rotate --skip 7 --fuzz 7 --delete --format='%Y-%m-%dT%H:%M:%S+02:00.sql')", | |
53 | user => $pg_user, | |
54 | hour => 3, | |
55 | minute => 1, | |
56 | description => "Cleanup the database backups exponentially", | |
57 | }, | |
58 | ] | |
59 | } | |
60 | } |