From 98f6105519e831e93f36564023dfeb90fb846544 Mon Sep 17 00:00:00 2001 From: Joe Banks Date: Thu, 13 Nov 2025 20:36:36 +0000 Subject: [PATCH] PostgreSQL 18 updates --- ansible/roles/postgres/tasks/main.yml | 70 ++++++++++++------- .../postgres/templates/postgresql.conf.j2 | 12 ++-- ansible/roles/postgres/vars/main/main.yml | 4 +- 3 files changed, 52 insertions(+), 34 deletions(-) diff --git a/ansible/roles/postgres/tasks/main.yml b/ansible/roles/postgres/tasks/main.yml index d4cf6af7..8d5aef78 100644 --- a/ansible/roles/postgres/tasks/main.yml +++ b/ansible/roles/postgres/tasks/main.yml @@ -1,3 +1,19 @@ +- name: Fetch PostgreSQL signing key + ansible.builtin.get_url: + url: "https://www.postgresql.org/media/keys/{{ postgres_apt_key_fingerprint }}.asc" + dest: "{{ postgres_apt_key_location }}" + mode: '0644' + tags: + - role::postgres + +- name: Setup PostgreSQL apt repository + ansible.builtin.apt_repository: + repo: "deb [signed-by={{ postgres_apt_key_location }}] http://apt.postgresql.org/pub/repos/apt/ {{ ansible_distribution_release }}-pgdg main" + state: present + filename: "pgdg" + tags: + - role::postgres + - name: Install postgres packages apt: name: @@ -10,6 +26,33 @@ tags: - role::postgres +- name: Import postgresql.conf + template: + src: postgresql.conf.j2 + dest: /etc/postgresql/{{ postgres_version }}/main/postgresql.conf + owner: postgres + group: postgres + mode: "0644" + tags: + - role::postgres + notify: + - Restart the postgres service + +- name: Import PostgreSQL identity map (pg_ident.conf) + copy: + src: ident.conf + dest: /etc/postgresql/{{ postgres_version }}/main/pg_ident.conf + owner: postgres + group: postgres + mode: "0644" + tags: + - role::postgres + notify: + - Reload the postgres service + +- name: Install and configure pg_repack + include_tasks: pg_repack.yml + - name: Check postgres is started and enabled on boot service: name: '{{ postgres_daemon }}' @@ -97,30 +140,3 @@ become_user: "{{ postgres_user }}" tags: - role::postgres - -- name: Import postgresql.conf - template: - src: postgresql.conf.j2 - dest: /etc/postgresql/{{ postgres_version }}/main/postgresql.conf - owner: postgres - group: postgres - mode: "0644" - tags: - - role::postgres - notify: - - Restart the postgres service - -- name: Import PostgreSQL identity map (pg_ident.conf) - copy: - src: ident.conf - dest: /etc/postgresql/{{ postgres_version }}/main/pg_ident.conf - owner: postgres - group: postgres - mode: "0644" - tags: - - role::postgres - notify: - - Reload the postgres service - -- name: Install and configure pg_repack - include_tasks: pg_repack.yml diff --git a/ansible/roles/postgres/templates/postgresql.conf.j2 b/ansible/roles/postgres/templates/postgresql.conf.j2 index 4285ba52..59d22beb 100644 --- a/ansible/roles/postgres/templates/postgresql.conf.j2 +++ b/ansible/roles/postgres/templates/postgresql.conf.j2 @@ -1,7 +1,7 @@ -data_directory = '/var/lib/postgresql/15/main' -hba_file = '/etc/postgresql/15/main/pg_hba.conf' -ident_file = '/etc/postgresql/15/main/pg_ident.conf' -external_pid_file = '/var/run/postgresql/15-main.pid' +data_directory = '/var/lib/postgresql/{{ postgres_version }}/main' +hba_file = '/etc/postgresql/{{ postgres_version }}/main/pg_hba.conf' +ident_file = '/etc/postgresql/{{ postgres_version }}/main/pg_ident.conf' +external_pid_file = '/var/run/postgresql/{{ postgres_version }}-main.pid' listen_addresses = '89.58.26.118,localhost' port = 5432 unix_socket_directories = '/var/run/postgresql' @@ -27,7 +27,7 @@ include_dir = 'conf.d' cluster_name = 'schweinehund' # The following is from https://pgtune.leopard.in.ua/ -# DB Version: 15 +# DB Version: 18 # OS Type: linux # DB Type: mixed # Total Memory (RAM): 64 GB @@ -43,7 +43,7 @@ wal_buffers = 16MB default_statistics_target = 100 random_page_cost = 1.1 effective_io_concurrency = 200 -work_mem = 20971kB +work_mem = 76260kB huge_pages = try min_wal_size = 1GB max_wal_size = 4GB diff --git a/ansible/roles/postgres/vars/main/main.yml b/ansible/roles/postgres/vars/main/main.yml index d8f8ba9d..d91a3906 100644 --- a/ansible/roles/postgres/vars/main/main.yml +++ b/ansible/roles/postgres/vars/main/main.yml @@ -1,4 +1,6 @@ -postgres_version: "15" +postgres_version: "18" +postgres_apt_key_fingerprint: "ACCC4CF8" +postgres_apt_key_location: "/etc/apt/keyrings/postgresql.gpg" postgres_daemon: "postgresql@{{ postgres_version }}-main" postgres_user: "postgres" postgres_pg_repack_cron_filename: ansible_postgres_pg_repack