From aa247b21e11bd0f11b07b0a9640b9e7c56f6a3e9 Mon Sep 17 00:00:00 2001
From: Henrik Henriksson <hx@hx.ax>
Date: Sun, 17 Mar 2019 13:30:15 +0100
Subject: [PATCH] Dump postgres hourly

---
 modules/insidan/files/pg_dump.sh         |  6 ++++++
 modules/insidan/manifests/openproject.pp | 25 ++++++++++++++++++++++--
 2 files changed, 29 insertions(+), 2 deletions(-)
 create mode 100644 modules/insidan/files/pg_dump.sh

diff --git a/modules/insidan/files/pg_dump.sh b/modules/insidan/files/pg_dump.sh
new file mode 100644
index 0000000..b4ad4d6
--- /dev/null
+++ b/modules/insidan/files/pg_dump.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+FILE=/pg_dump/`date +"%Y%m%d%H%M"`_pg_dump.sql
+
+su postgres -c "pg_dump openproject -F p -f ${FILE}"
+find /pg_dump -maxdepth 1 -mtime +14 -name "*_pg_dump.sql" -exec rm '{}' ';'
diff --git a/modules/insidan/manifests/openproject.pp b/modules/insidan/manifests/openproject.pp
index 43771cf..c441a34 100644
--- a/modules/insidan/manifests/openproject.pp
+++ b/modules/insidan/manifests/openproject.pp
@@ -10,6 +10,8 @@ class insidan::openproject {
   }~>
   package { 'openproject' :
     ensure => installed,
+  # Here, someone MUST run `openproject configure`. At least until we
+  # configure it via puppet...
   }
 
 
@@ -17,8 +19,27 @@ class insidan::openproject {
     ensure => installed,
   }
 
-  # Here, someone MUST run `openproject configure`. At least until we
-  # configure it via puppet...
+  file { '/pg_dump':
+    ensure => directory,
+    owner => 'postgres',
+    require => Package['postgresql'],
+  }
+
+  file { '/opt/pg_dump.sh':
+    ensure => file,
+    mode   => '755',
+    source => 'puppet:///modules/insidan/pg_dump.sh',
+  }
+
+  cron { 'pg_dump openproject':
+    ensure => present,
+    command => '/opt/pg_dump.sh',
+    user => root,
+    minute => 45,
+    require => [ File['/opt/pg_dump.sh'], File['/pg_dump'] ]
+  }
+  
+
 
 
 
-- 
GitLab