Bring OSQA backups under chef control
authorTom Hughes <tom@compton.nu>
Tue, 26 Aug 2014 16:44:34 +0000 (17:44 +0100)
committerTom Hughes <tom@compton.nu>
Tue, 26 Aug 2014 16:47:15 +0000 (17:47 +0100)
cookbooks/osqa/recipes/default.rb
cookbooks/osqa/templates/default/backup.cron.erb [new file with mode: 0644]
roles/osqa.rb

index 9776791e9877fce8cabe0ab7e441a97831b91cc8..de65ad99b7248e379dcab3f173f3d68bf60cc957 100644 (file)
@@ -48,6 +48,7 @@ node[:osqa][:sites].each do |site|
   database_name = site[:database_name] || node[:osqa][:database_name]
   database_user = site[:database_user] || node[:osqa][:database_user]
   database_password = site[:database_user] || node[:osqa][:database_password]
+  backup_name = site[:backup]
 
   apache_site name do
     template "apache.erb"
@@ -115,4 +116,12 @@ node[:osqa][:sites].each do |site|
     content settings
     notifies :reload, "service[apache2]"
   end
+
+  template "/etc/cron.daily/#{backup_name}-backup" do
+    source "backup.cron.erb"
+    owner "root"
+    group "root"
+    mode 0755
+    variables :name => backup_name, :directory => directory, :user => site_user, :database => database_name
+  end
 end
diff --git a/cookbooks/osqa/templates/default/backup.cron.erb b/cookbooks/osqa/templates/default/backup.cron.erb
new file mode 100644 (file)
index 0000000..28b4a0f
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# DO NOT EDIT - This file is being maintained by Chef
+
+T=$(mktemp -d -t -p /var/tmp osqa.XXXXXXXXXX)
+D=$(date +%Y-%m-%d)
+B=<%= @name %>-$D.tar.gz
+
+mkdir $T/<%= @name %>-$D
+chown <%= @user %> $T
+chown <%= @user %> $T/osqa-$D
+sudo -u <%= @user %> pg_dump --format=custom --file=$T/<%= @name %>-$D/osqa.dmp <%= @database %>
+ln -s <%= @directory %>/upfiles $T/<%= @name %>-$D/upfiles
+
+export GZIP="--rsyncable -9"
+export RSYNC_RSH="ssh -ax -c arcfour"
+
+nice tar --create --gzip --dereference --directory=$T --file=$T/$B <%= @name %>-$D
+nice rsync $T/$B backup::backup
+
+rm -rf $T
index f916361dae42c0399e5daf5967093a34e8fb82a6..1abaf1fb521d2ad8ce37d47fa826ae0be5d4b545 100644 (file)
@@ -9,7 +9,7 @@ default_attributes(
   },
   :osqa => {
     :sites => [
-      { :name => "help.openstreetmap.org" }
+      { :name => "help.openstreetmap.org", :backup => "osqa" }
     ]
   }
 )