1 define profile::postgresql::backup_dump (
2 String $pg_user = "postgres",
3 String $pg_group = "postgres",
4 Optional[Variant[String, Integer]] $pg_port = undef,
7 $pg_path = "$base_path/postgresql"
8 $pg_backup_path = "$base_path/postgresql_backup"
9 $pg_host = split($base_path, "/")[-1]
11 ensure_packages(["python", "python-pip"])
12 ensure_resource("package", "pylog2rotate", {
13 source => "git+https://github.com/avian2/pylog2rotate",
16 require => Package["python-pip"],
19 file { $pg_backup_path:
24 require => File[$base_path],
27 if $pg_port and !empty($pg_port) {
28 $pg_port_arg = " -p $pg_port"
33 file { "/usr/local/sbin/backup_psql_$pg_host.sh":
35 content => template("profile/postgresql/backup_psql.sh.erb"),
38 if ($pg_host == "eldiron.immae.eu") {
39 cron::job::multiple { "backup_psql_$pg_host":
41 require => [File[$pg_backup_path], File[$pg_path]],
44 command => "/usr/local/sbin/backup_psql_$pg_host.sh",
48 description => "Backup the database",
51 command => "/usr/bin/rm -f $(ls -1 $pg_backup_path/*.sql | sort -r | sed -e '1,12d')",
55 description => "Cleanup the database backups",
60 cron::job::multiple { "backup_psql_$pg_host":
62 require => [File[$pg_backup_path], File[$pg_path]],
65 command => "/usr/local/sbin/backup_psql_$pg_host.sh",
69 description => "Backup the database",
72 command => "/usr/bin/rm -f $(ls -1 $pg_backup_path/*.sql | grep -v 'T22:' | sort -r | sed -e '1,12d')",
76 description => "Cleanup the database backups",
79 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')",
83 description => "Cleanup the database backups exponentially",
89 @profile::monitoring::local_service { "Last postgresql dump in $pg_backup_path is not too old":
91 "naemon-postgresql-dumps-$pg_host" => "naemon ALL=($pg_user) NOPASSWD: /usr/bin/find $pg_backup_path -mindepth 1 -maxdepth 1 -printf %T@?n",
94 check_command => "check_last_file_date!$pg_backup_path!7!$pg_user",