From 965742d2b0533f0488a777f453ee5a3f1815b091 Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Sun, 17 Nov 2024 09:34:09 -0600 Subject: [PATCH] r/postgresql-server-base: Factor out prep steps There's a bit of a dependency loop between the _postgresql-server_ role and other roles that supplement it, like _wal-g-pg_ and _postgresql-cert_. The latter roles need PostgreSQL installed, but when those roles are used, the server cannot be started until they have been applied. To resolve this situation, I've broken out the initial installation steps from the _postgresql-server_ role into _postgresql-server-base_. Roles that need PostgreSQL installed, but need to be applied before the server can start, can depend on this role. --- roles/postgresql-cert/meta/main.yml | 3 ++ roles/postgresql-cert/tasks/main.yml | 1 - .../files/postgresql-upgrade.service | 0 .../files/postgresql-upgrade.sh | 0 roles/postgresql-server-base/tasks/main.yml | 38 +++++++++++++++++++ roles/postgresql-server/meta/main.yml | 1 + roles/postgresql-server/tasks/main.yml | 38 ------------------- 7 files changed, 42 insertions(+), 39 deletions(-) create mode 100644 roles/postgresql-cert/meta/main.yml rename roles/{postgresql-server => postgresql-server-base}/files/postgresql-upgrade.service (100%) rename roles/{postgresql-server => postgresql-server-base}/files/postgresql-upgrade.sh (100%) create mode 100644 roles/postgresql-server-base/tasks/main.yml diff --git a/roles/postgresql-cert/meta/main.yml b/roles/postgresql-cert/meta/main.yml new file mode 100644 index 0000000..bc3e962 --- /dev/null +++ b/roles/postgresql-cert/meta/main.yml @@ -0,0 +1,3 @@ +dependencies: +- systemd-base +- postgresql-server-base diff --git a/roles/postgresql-cert/tasks/main.yml b/roles/postgresql-cert/tasks/main.yml index c84bf2f..7746686 100644 --- a/roles/postgresql-cert/tasks/main.yml +++ b/roles/postgresql-cert/tasks/main.yml @@ -2,7 +2,6 @@ package: name: - certbot - - postgresql-server # to get postgres user account state: present tags: - install diff --git a/roles/postgresql-server/files/postgresql-upgrade.service b/roles/postgresql-server-base/files/postgresql-upgrade.service similarity index 100% rename from roles/postgresql-server/files/postgresql-upgrade.service rename to roles/postgresql-server-base/files/postgresql-upgrade.service diff --git a/roles/postgresql-server/files/postgresql-upgrade.sh b/roles/postgresql-server-base/files/postgresql-upgrade.sh similarity index 100% rename from roles/postgresql-server/files/postgresql-upgrade.sh rename to roles/postgresql-server-base/files/postgresql-upgrade.sh diff --git a/roles/postgresql-server-base/tasks/main.yml b/roles/postgresql-server-base/tasks/main.yml new file mode 100644 index 0000000..3d6e3eb --- /dev/null +++ b/roles/postgresql-server-base/tasks/main.yml @@ -0,0 +1,38 @@ +- name: ensure postgresql-server is installed + package: + name: + - postgresql-server + - postgresql-upgrade + state: present + tags: + - install + +- name: ensure postgresql-upgrade script is installed + copy: + src: postgresql-upgrade.sh + dest: /usr/local/libexec/postgresql-upgrade + owner: root + group: root + mode: u=rwx,go=rx + tags: + - postgresql-upgrade +- name: ensure postgresql-upgrade systemd unit is installed + copy: + src: postgresql-upgrade.service + dest: /etc/systemd/system/postgresql-upgrade.service + owner: root + group: root + mode: u=rw,go=r + notify: + - reload systemd + tags: + - postgresql-upgrade + - systemd + +- name: ensure postgresql-upgrade service starts when needed + service: + name: postgresql-upgrade + enabled: true + tags: + - postgresql-upgrade + - service diff --git a/roles/postgresql-server/meta/main.yml b/roles/postgresql-server/meta/main.yml index e2827fe..bc3e962 100644 --- a/roles/postgresql-server/meta/main.yml +++ b/roles/postgresql-server/meta/main.yml @@ -1,2 +1,3 @@ dependencies: - systemd-base +- postgresql-server-base diff --git a/roles/postgresql-server/tasks/main.yml b/roles/postgresql-server/tasks/main.yml index e6cb8ae..90e714a 100644 --- a/roles/postgresql-server/tasks/main.yml +++ b/roles/postgresql-server/tasks/main.yml @@ -1,12 +1,3 @@ -- name: ensure postgresql-server is installed - package: - name: - - postgresql-server - - postgresql-upgrade - state: present - tags: - - install - - name: restore postgresql data directory from backup command: >- {{ postgresql_restore_command }} @@ -132,35 +123,6 @@ tags: - systemd -- name: ensure postgresql-upgrade script is installed - copy: - src: postgresql-upgrade.sh - dest: /usr/local/libexec/postgresql-upgrade - owner: root - group: root - mode: u=rwx,go=rx - tags: - - postgresql-upgrade -- name: ensure postgresql-upgrade systemd unit is installed - copy: - src: postgresql-upgrade.service - dest: /etc/systemd/system/postgresql-upgrade.service - owner: root - group: root - mode: u=rw,go=r - notify: - - reload systemd - tags: - - postgresql-upgrade - - systemd - -- name: ensure postgresql-upgrade service starts when needed - service: - name: postgresql-upgrade - enabled: true - tags: - - postgresql-upgrade - - service - name: ensure postgresql starts at boot service: name: postgresql