From 470b60f9886641cd5d8bc3c09899c9a6366b7f02 Mon Sep 17 00:00:00 2001 From: uumas Date: Thu, 12 Mar 2026 00:26:35 +0200 Subject: [PATCH] service: Support postgres >= 18 and postgres upgrades --- roles/service/defaults/main.yaml | 3 ++- roles/service/meta/argument_specs.yaml | 2 +- roles/service/vars/database/postgres.yaml | 8 +++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/roles/service/defaults/main.yaml b/roles/service/defaults/main.yaml index bd0377e..9963233 100644 --- a/roles/service/defaults/main.yaml +++ b/roles/service/defaults/main.yaml @@ -22,7 +22,8 @@ service_database_type: none service_database_additional_networks: [] service_database_secret_type: mount service_database_secret_target: "{{ service_database_type }}" -service_postgres_image: docker.io/library/postgres +service_postgres_image: docker.io/pgautoupgrade/pgautoupgrade +service_postgres_tag: alpine service_redis: false service_additional_containers: [] diff --git a/roles/service/meta/argument_specs.yaml b/roles/service/meta/argument_specs.yaml index 56e3ee0..1b82d7e 100644 --- a/roles/service/meta/argument_specs.yaml +++ b/roles/service/meta/argument_specs.yaml @@ -294,7 +294,7 @@ argument_specs: description: - Postgresql version to use. - Can be debian (n) or alpine-based (n-alpine), where n can be major version like 14 or minor like 14.13. - - Required if service_database_type is postgres, does nothing otherwise + - Ignored if database type is not postgres. - If a custom postgres image is specified, see that image documentation for supported tags. type: str required: false diff --git a/roles/service/vars/database/postgres.yaml b/roles/service/vars/database/postgres.yaml index 350e5b4..a88f6ed 100644 --- a/roles/service/vars/database/postgres.yaml +++ b/roles/service/vars/database/postgres.yaml @@ -1,6 +1,12 @@ --- _service_database_image: "{{ service_postgres_image }}:{{ service_postgres_tag }}" -_service_database_mount_destination: /var/lib/postgresql/data +_service_database_mount_destination: >- + {{ + '/var/lib/postgresql/data' + if (service_postgres_tag | split('-') | length > 1) + and (service_postgres_tag | split('-') | first) is version('18', '<') + else '/var/lib/postgresql' + }} _service_database_env: POSTGRES_USER: "{{ service_name | replace('-', '_') }}" POSTGRES_PASSWORD_FILE: "/run/secrets/{{ service_database_type }}"