]> git.immae.eu Git - github/fretlink/ansible-postgresql-role.git/blame - templates/standby-clone.sh.j2
standby: rsync from barman is optional if SSH access is already here
[github/fretlink/ansible-postgresql-role.git] / templates / standby-clone.sh.j2
CommitLineData
d0bc90e0
P
1#!/bin/bash
2# {{ ansible_managed }}
3
c95984df
P
4set -eo pipefail
5
d0bc90e0
P
6BARMAN_DATABASE=$1
7BARMAN_BACKUP_VERSION=$2
8
9if [[ -z $BARMAN_DATABASE || -z $BARMAN_BACKUP_VERSION ]]
10then
11 echo "Usage : $0 BARMAN_DATABASE BARMAN_BACKUP_VERSION" >&2
12 echo " Example: $0 25kv 20161118T002405" >&2
13 exit 1
14fi
15
16BACKUP_DATE=`date +%s`
17
18echo "accept key if necessary"
19sudo -u postgres ssh barman@{{ postgres_barman_server }} echo ""
20
21echo Stopping PostgreSQL
c95984df 22pg_ctlcluster {{ postgres_version }} {{ postgres_cluster_name }} stop || true
d0bc90e0
P
23
24echo Cleaning up old cluster directory
25sudo -u postgres mv /var/lib/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}{,_$BACKUP_DATE}
26
27echo Creating new directory
28sudo -u postgres mkdir -p /var/lib/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}
29
30echo Get previous backup from backups server
31sudo -u postgres \
32 time rsync --progress -pvia --exclude='*.conf' --exclude='server.crt' --exclude='server.key' --delete \
c95984df 33{% if postgres_barman_rsync_enabled|default(false) -%}
d0bc90e0 34 --password-file=/var/lib/postgresql/.rsync_pass \
c95984df
P
35{%- endif %}
36 {% if postgres_barman_rsync_enabled|default(false) -%}rsync://{%- endif -%}barman@{{ postgres_barman_server }}{%- if postgres_barman_rsync_enabled|default(false) -%}/backups{%- else -%}:~{%- endif -%}/$BARMAN_DATABASE/base/$BARMAN_BACKUP_VERSION/data/ \
d0bc90e0
P
37 /var/lib/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}/
38
39echo Restoring .conf and server certificate
40sudo -u postgres cp -a /var/lib/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}_$BACKUP_DATE/{*.conf,server.crt,server.key} /var/lib/postgresql/{{ postgres_version }}/{{ postgres_cluster_name }}/
41
42echo Ensure rights are correcly set
43chown -R postgres:postgres /var/lib/postgresql/{{ postgres_version }}/
44chmod 0700 /var/lib/postgresql/{{ postgres_version }}/
45chmod -R o-rwx /var/lib/postgresql/{{ postgres_version }}/
46
47echo Starting PostgreSQL
48sudo pg_ctlcluster {{ postgres_version }} {{ postgres_cluster_name }} start