diff options
author | Paul B <paul@bonaud.fr> | 2020-06-05 14:39:43 +0200 |
---|---|---|
committer | Paul B <paul@bonaud.fr> | 2020-06-05 14:39:43 +0200 |
commit | 0ca1cf044b84bdae8c47e2d764715dbd5e7e9d69 (patch) | |
tree | c76ddecb3b0434e45f481e8b0585e3b62ae31bb0 /templates | |
parent | 9e6f9658fbf5db657a2dd8465bf0ae4f41da161e (diff) | |
parent | b722248ed7c4a7aba2b047855b983d72a9725209 (diff) | |
download | ansible-postgresql-role-master.tar.gz ansible-postgresql-role-master.tar.zst ansible-postgresql-role-master.zip |
Diffstat (limited to 'templates')
-rwxr-xr-x | templates/standby-barman-clone.sh.j2 (renamed from templates/standby-clone.sh.j2) | 0 | ||||
-rwxr-xr-x | templates/standby-pg_basebackup-clone.sh.j2 | 49 |
2 files changed, 49 insertions, 0 deletions
diff --git a/templates/standby-clone.sh.j2 b/templates/standby-barman-clone.sh.j2 index 2db44b6..2db44b6 100755 --- a/templates/standby-clone.sh.j2 +++ b/templates/standby-barman-clone.sh.j2 | |||
diff --git a/templates/standby-pg_basebackup-clone.sh.j2 b/templates/standby-pg_basebackup-clone.sh.j2 new file mode 100755 index 0000000..ca34a05 --- /dev/null +++ b/templates/standby-pg_basebackup-clone.sh.j2 | |||
@@ -0,0 +1,49 @@ | |||
1 | #!/usr/bin/env bash | ||
2 | # {{ ansible_managed }} | ||
3 | |||
4 | set -eo pipefail | ||
5 | |||
6 | CLUSTER_VERSION="{{ postgres_version }}" | ||
7 | CLUSTER_NAME="{{ postgres_cluster_name }}" | ||
8 | PRIMARY_CLUSTER_HOST="{{ postgres_primary.host }}" | ||
9 | PRIMARY_CLUSTER_PORT="{{ postgres_primary.port }}" | ||
10 | PRIMARY_CLUSTER_USER="{{ postgres_primary.replication_user }}" | ||
11 | PRIMARY_CLUSTER_PASSWORD="{{ postgres_primary.replication_password }}" | ||
12 | {% if postgres_primary.replication_dbname is defined %} | ||
13 | PRIMARY_CLUSTER_DBNAME=" dbname='{{ postgres_primary.replication_dbname }}'" | ||
14 | {% endif %} | ||
15 | |||
16 | read -p "You are about to clone the primary cluster (${PRIMARY_CLUSTER_HOST}:${PRIMARY_CLUSTER_PORT}) with pg_basebackup. This will replace the local ${CLUSTER_VERSION}/${CLUSTER_NAME} cluster. Are you sure? [y/n] " -r go | ||
17 | |||
18 | if [ "$go" != "y" ]; then | ||
19 | echo "Aborted." | ||
20 | exit 1 | ||
21 | fi | ||
22 | |||
23 | BACKUP_DATE=$(date +%s) | ||
24 | |||
25 | echo "Stopping PostgreSQL" | ||
26 | pg_ctlcluster "${CLUSTER_VERSION}" "${CLUSTER_NAME}" stop || true | ||
27 | |||
28 | echo "Cleaning up old cluster directory" | ||
29 | sudo -u postgres mv "/var/lib/postgresql/${CLUSTER_VERSION}/${CLUSTER_NAME}"{,"_${BACKUP_DATE}"} | ||
30 | |||
31 | echo "Creating new directory" | ||
32 | sudo -u postgres mkdir -p "/var/lib/postgresql/${CLUSTER_VERSION}/${CLUSTER_NAME}" | ||
33 | |||
34 | echo "Get backup from primary server" | ||
35 | sudo -u postgres \ | ||
36 | time "/usr/lib/postgresql/${CLUSTER_VERSION}/bin/pg_basebackup" --format=p -R \ | ||
37 | -d "host='${PRIMARY_CLUSTER_HOST}' port='${PRIMARY_CLUSTER_PORT}' user='${PRIMARY_CLUSTER_USER}' password='${PRIMARY_CLUSTER_PASSWORD}' ${PRIMARY_CLUSTER_DBNAME} sslmode=require" \ | ||
38 | -D "/var/lib/postgresql/${CLUSTER_VERSION}/${CLUSTER_NAME}/" | ||
39 | |||
40 | echo "Restoring .conf and server certificate" | ||
41 | sudo -u postgres cp -a "/var/lib/postgresql/${CLUSTER_VERSION}/${CLUSTER_NAME}_${BACKUP_DATE}/"{*.conf,server.crt,server.key} "/var/lib/postgresql/${CLUSTER_VERSION}/${CLUSTER_NAME}/" | ||
42 | |||
43 | echo "Ensure rights are correcly set" | ||
44 | chown -R postgres:postgres "/var/lib/postgresql/${CLUSTER_VERSION}/" | ||
45 | chmod 0700 "/var/lib/postgresql/${CLUSTER_VERSION}/" | ||
46 | chmod -R o-rwx "/var/lib/postgresql/${CLUSTER_VERSION}/" | ||
47 | |||
48 | echo "Starting PostgreSQL" | ||
49 | sudo pg_ctlcluster "${CLUSTER_VERSION}" "${CLUSTER_NAME}" start | ||