From a44b604f6bf7b44a5cdf3dba319e76f146811808 Mon Sep 17 00:00:00 2001
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
Date: Thu, 14 Feb 2019 18:59:00 +0100
Subject: [PATCH] postgres: Integrate soyuz' config and clean up syntax

---
 playbooks/apollo.yml                        | 8 ++++++--
 playbooks/nymeria.yml                       | 6 ++++--
 playbooks/soyuz.yml                         | 7 ++++++-
 roles/postgres/defaults/main.yml            | 3 +++
 roles/postgres/templates/postgresql.conf.j2 | 6 +++---
 5 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/playbooks/apollo.yml b/playbooks/apollo.yml
index 5fb18a3bc..6eb9fd0f2 100644
--- a/playbooks/apollo.yml
+++ b/playbooks/apollo.yml
@@ -30,8 +30,12 @@
     - { role: postfix, postfix_server: false, postfix_smtpd_public: true, postfix_patchwork_enabled: true, tags: ["mail", "postfix"] }
     - { role: opendkim, dkim_selector: apollo, tags: ['mail', "opendkim"] }
     - { role: postfwd, tags: ['mail', "postfwd"] }
-    - { role: postgres, postgres_listen_addresses: "*", postgres_max_connections: 1000, postgres_ssl: 'on', postgres_shared_buffers: 4096MB,
-              tags: ['postgres'] }
+    - role: postgres
+      postgres_listen_addresses: "*"
+      postgres_max_connections: 1000
+      postgres_ssl: 'on'
+      postgres_shared_buffers: 4096MB
+      tags: ['postgres']
     - { role: mariadb, mariadb_innodb_buffer_pool_size: '64M', mariadb_table_open_cache: '256', mariadb_query_cache_type: '0',
               mariadb_innodb_file_per_table: True, tags: ["mariadb"] }
     - { role: sudo, tags: ['sudo'] }
diff --git a/playbooks/nymeria.yml b/playbooks/nymeria.yml
index ae2b127d7..3db6ccb94 100644
--- a/playbooks/nymeria.yml
+++ b/playbooks/nymeria.yml
@@ -10,8 +10,10 @@
     - { role: unbound }
     - { role: root_ssh, tags: ['root_ssh'] }
     - { role: nginx, tags: ["nginx"] }
-    - { role: postgres, postgres_max_connections: 1000, postgres_shared_buffers: 4096MB,
-              tags: ['postgres'] }
+    - role: postgres
+      postgres_max_connections: 1000
+      postgres_shared_buffers: 4096MB
+      tags: ['postgres']
     - { role: uwsgi, tags: ['uwsgi'] }
     - { role: opendkim, dkim_selector: nymeria, tags: ['mail'] }
     - { role: postfix, postfix_server: false, postfix_smtpd_public: false, tags: ['mail'] }
diff --git a/playbooks/soyuz.yml b/playbooks/soyuz.yml
index 857096431..6a845d265 100644
--- a/playbooks/soyuz.yml
+++ b/playbooks/soyuz.yml
@@ -16,7 +16,12 @@
     - { role: nginx, tags: ["nginx"] }
     - { role: sudo, tags: ['sudo', 'archusers'] }
     - { role: phrik, tags: ['phrik'] }
-    - { role: postgres, tags: ['postgres'] }
+    - role: postgres
+      postgres_shared_buffers: 2GB
+      postgres_work_mem: 32MB
+      postgres_maintenance_work_mem: 1GB
+      postgres_effective_cache_size: 32GB
+      tags: ['postgres']
     - { role: oidentd, tags: ['oidentd'] }
     - { role: quassel, quassel_domain: "quassel.archlinux.org", tags: ['quassel'] }
     - { role: matrix, tags: ['matrix'] }
diff --git a/roles/postgres/defaults/main.yml b/roles/postgres/defaults/main.yml
index d3a0060fa..e377c5418 100644
--- a/roles/postgres/defaults/main.yml
+++ b/roles/postgres/defaults/main.yml
@@ -9,6 +9,9 @@ postgres_ssl_key_file: '/var/lib/postgres/data/privkey.pem'
 postgres_ssl_ca_file: '/var/lib/postgres/data/chain.pem'
 
 postgres_shared_buffers: '128MB'
+postgres_work_mem: '4MB'
+postgres_maintenance_work_mem: '64MB'
+postgres_effective_cache_size: '4GB'
 
 postgres_ssl_hosts4: []
 postgres_ssl_hosts6: []
diff --git a/roles/postgres/templates/postgresql.conf.j2 b/roles/postgres/templates/postgresql.conf.j2
index 79b1da590..a71558c0e 100644
--- a/roles/postgres/templates/postgresql.conf.j2
+++ b/roles/postgres/templates/postgresql.conf.j2
@@ -123,8 +123,8 @@ shared_buffers = {{ postgres_shared_buffers }}			# min 128kB
 					# (change requires restart)
 # Caution: it is not advisable to set max_prepared_transactions nonzero unless
 # you actively intend to use prepared transactions.
-#work_mem = 4MB				# min 64kB
-#maintenance_work_mem = 64MB		# min 1MB
+work_mem = {{ postgres_work_mem }}				# min 64kB
+maintenance_work_mem = {{ postgres_maintenance_work_mem }}		# min 1MB
 #autovacuum_work_mem = -1		# min 1MB, or -1 to use maintenance_work_mem
 #max_stack_depth = 2MB			# min 100kB
 dynamic_shared_memory_type = posix	# the default is the first option
@@ -331,7 +331,7 @@ min_wal_size = 80MB
 
 #min_parallel_table_scan_size = 8MB
 #min_parallel_index_scan_size = 512kB
-#effective_cache_size = 4GB
+effective_cache_size = {{ postgres_effective_cache_size }}
 
 # - Genetic Query Optimizer -
 
-- 
GitLab