From e861883627134b939dadcd015dfae5040e91bcb9 Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Sun, 17 Nov 2024 09:38:18 -0600 Subject: [PATCH] r/pgsql-server-base: Add post-upgrade capability The `postgresql-upgrade` script will now run any executables located in the `/etc/postgresql/post-upgrade.d` directory. This will allow making arbitrary changes to the system after a PostgreSQL major version upgrade. Notably, we will use this capability to change the WAL-G configuration to upload WAL archives and backups to the correct version-specific location. --- .../postgresql-server-base/files/postgresql-upgrade.sh | 10 ++++++++++ roles/postgresql-server-base/tasks/main.yml | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/roles/postgresql-server-base/files/postgresql-upgrade.sh b/roles/postgresql-server-base/files/postgresql-upgrade.sh index b7e145e..e1c1590 100644 --- a/roles/postgresql-server-base/files/postgresql-upgrade.sh +++ b/roles/postgresql-server-base/files/postgresql-upgrade.sh @@ -38,3 +38,13 @@ runuser -u postgres -- pg_upgrade \ -o '-c restore_command= -c archive_command=' \ -O '-c restore_command= -c archive_command=' \ -k + +for f in /etc/postgresql/post-upgrade.d/*; do + if [ -x "${f}" ]; then + printf 'Running post-update script: %s\n' "${f}" >&2 + "${f}" || { + printf 'Post-update script %s failed\n' "${f}" >&2 + continue + } + fi +done diff --git a/roles/postgresql-server-base/tasks/main.yml b/roles/postgresql-server-base/tasks/main.yml index 3d6e3eb..40de242 100644 --- a/roles/postgresql-server-base/tasks/main.yml +++ b/roles/postgresql-server-base/tasks/main.yml @@ -29,6 +29,16 @@ - postgresql-upgrade - systemd +- name: ensure postgresql post-upgrade directory exists + file: + path: /etc/postgresql/post-upgrade.d + owner: root + group: root + mode: u=rwx,go=rx + state: directory + tags: + - postgresql-upgrade + - name: ensure postgresql-upgrade service starts when needed service: name: postgresql-upgrade