From 79c6636acc892cc8fd336a0506948fcd16e8654f Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 26 Aug 2014 17:44:34 +0100 Subject: [PATCH] Bring OSQA backups under chef control --- cookbooks/osqa/recipes/default.rb | 9 ++++++++ .../osqa/templates/default/backup.cron.erb | 21 +++++++++++++++++++ roles/osqa.rb | 2 +- 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 cookbooks/osqa/templates/default/backup.cron.erb diff --git a/cookbooks/osqa/recipes/default.rb b/cookbooks/osqa/recipes/default.rb index 9776791e9..de65ad99b 100644 --- a/cookbooks/osqa/recipes/default.rb +++ b/cookbooks/osqa/recipes/default.rb @@ -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 index 000000000..28b4a0fbf --- /dev/null +++ b/cookbooks/osqa/templates/default/backup.cron.erb @@ -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 diff --git a/roles/osqa.rb b/roles/osqa.rb index f916361da..1abaf1fb5 100644 --- a/roles/osqa.rb +++ b/roles/osqa.rb @@ -9,7 +9,7 @@ default_attributes( }, :osqa => { :sites => [ - { :name => "help.openstreetmap.org" } + { :name => "help.openstreetmap.org", :backup => "osqa" } ] } ) -- 2.39.5