]>
Commit | Line | Data |
---|---|---|
d2f031ec IB |
1 | define profile::postgresql::backup_dump ( |
2 | String $pg_user = "postgres", | |
3 | String $pg_group = "postgres", | |
4 | ) { | |
5 | $base_path = $title | |
6 | $pg_path = "$base_path/postgresql" | |
7 | $pg_backup_path = "$base_path/postgresql_backup" | |
8 | $pg_host = split($base_path, "/")[-1] | |
9 | ||
10 | ensure_packages(["python", "python-pip"]) | |
11 | ensure_resource("package", "pylog2rotate", { | |
12 | source => "git+https://github.com/avian2/pylog2rotate", | |
13 | ensure => present, | |
14 | provider => "pip3", | |
15 | require => Package["python-pip"], | |
16 | }) | |
17 | ||
18 | file { $pg_backup_path: | |
19 | ensure => directory, | |
20 | owner => $pg_user, | |
21 | group => $pg_group, | |
22 | mode => "0700", | |
23 | require => File[$base_path], | |
24 | } | |
25 | ||
26 | cron::job::multiple { "backup_psql_$pg_host": | |
27 | ensure => "present", | |
28 | require => [File[$pg_backup_path], File[$pg_path]], | |
29 | jobs => [ | |
30 | { | |
31 | command => "/usr/bin/pg_dumpall -h $pg_path -f $pg_backup_path/\$(date -Iseconds).sql", | |
32 | user => $pg_user, | |
33 | hour => "22,4,10,16", | |
34 | minute => 0, | |
35 | description => "Backup the database", | |
36 | }, | |
37 | { | |
38 | command => "/usr/bin/rm -f $(ls -1 $pg_backup_path/*.sql | grep -v 'T22:' | sort -r | sed -e '1,12d')", | |
39 | user => $pg_user, | |
40 | hour => 3, | |
41 | minute => 0, | |
42 | description => "Cleanup the database backups", | |
43 | }, | |
44 | { | |
45 | 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')", | |
46 | user => $pg_user, | |
47 | hour => 3, | |
48 | minute => 1, | |
49 | description => "Cleanup the database backups exponentially", | |
50 | }, | |
51 | ] | |
52 | } | |
53 | } |