[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
02/08: services: postgresql: Add socket directory support.
From: |
guix-commits |
Subject: |
02/08: services: postgresql: Add socket directory support. |
Date: |
Thu, 28 Jan 2021 07:00:03 -0500 (EST) |
mothacehe pushed a commit to branch master
in repository guix.
commit 6c0679215f4ffa534c1eb2e8c8a6e043a0c993fe
Author: Mathieu Othacehe <othacehe@gnu.org>
AuthorDate: Mon Jan 18 10:35:29 2021 +0100
services: postgresql: Add socket directory support.
* gnu/services/databases.scm (postgresql-config-file-socket-directory): New
procedure.
(<postgresql-config-file>)[socket-directory]: New field.
(postgresql-config-file-compiler): Honor it.
(postgresql-activation): Create the socket directory if needed.
* doc/guix.texi (Database Services): Document it.
* gnu/tests/guix.scm (%guix-data-service-os): Adapt it.
* gnu/tests/monitoring.scm (%zabbix-os): Ditto.
* gnu/tests/web.scm (patchwork-os): Ditto.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
---
doc/guix.texi | 6 ++++++
gnu/services/databases.scm | 32 +++++++++++++++++++++++---------
gnu/tests/guix.scm | 5 ++++-
gnu/tests/monitoring.scm | 7 ++++++-
gnu/tests/web.scm | 7 ++++++-
5 files changed, 45 insertions(+), 12 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 3c607b3..b01bbf0 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -19430,6 +19430,12 @@ configuration.
@item @code{ident-file} (default: @code{%default-postgres-ident})
Filename or G-expression for the user name mapping configuration.
+@item @code{socket-directory} (default: @code{"/var/lib/postgresql"})
+Specifies the directory of the Unix-domain socket(s) on which PostgreSQL
+is to listen for connections from client applications. If set to
+@code{#false} PostgreSQL does not listen on any Unix-domain sockets, in
+which case only TCP/IP sockets can be used to connect to the server.
+
@item @code{extra-config} (default: @code{'()})
List of additional keys and values to include in the PostgreSQL config
file. Each entry in the list should be a list where the first element
diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
index bb0e406..83dee52 100644
--- a/gnu/services/databases.scm
+++ b/gnu/services/databases.scm
@@ -43,6 +43,7 @@
postgresql-config-file-log-destination
postgresql-config-file-hba-file
postgresql-config-file-ident-file
+ postgresql-config-file-socket-directory
postgresql-config-file-extra-config
postgresql-configuration
@@ -101,20 +102,23 @@ host all all ::1/128 md5"))
(define-record-type* <postgresql-config-file>
postgresql-config-file make-postgresql-config-file
postgresql-config-file?
- (log-destination postgresql-config-file-log-destination
- (default "syslog"))
- (hba-file postgresql-config-file-hba-file
- (default %default-postgres-hba))
- (ident-file postgresql-config-file-ident-file
- (default %default-postgres-ident))
- (extra-config postgresql-config-file-extra-config
- (default '())))
+ (log-destination postgresql-config-file-log-destination
+ (default "syslog"))
+ (hba-file postgresql-config-file-hba-file
+ (default %default-postgres-hba))
+ (ident-file postgresql-config-file-ident-file
+ (default %default-postgres-ident))
+ (socket-directory postgresql-config-file-socket-directory
+ (default "/var/run/postgresql"))
+ (extra-config postgresql-config-file-extra-config
+ (default '())))
(define-gexp-compiler (postgresql-config-file-compiler
(file <postgresql-config-file>) system target)
(match file
(($ <postgresql-config-file> log-destination hba-file
- ident-file extra-config)
+ ident-file socket-directory
+ extra-config)
;; See: https://www.postgresql.org/docs/current/config-setting.html.
(define (format-value value)
(cond
@@ -136,6 +140,9 @@ host all all ::1/128 md5"))
`(("log_destination" ,log-destination)
("hba_file" ,hba-file)
("ident_file" ,ident-file)
+ ,@(if socket-directory
+ `(("unix_socket_directories" ,socket-directory))
+ '())
,@extra-config)))
(gexp->derivation
@@ -211,6 +218,13 @@ host all all ::1/128 md5"))
(mkdir-p #$data-directory)
(chown #$data-directory (passwd:uid user) (passwd:gid user))
+ ;; Create the socket directory.
+ (let ((socket-directory
+ #$(postgresql-config-file-socket-directory config-file)))
+ (when (string? socket-directory)
+ (mkdir-p socket-directory)
+ (chown socket-directory (passwd:uid user) (passwd:gid user))))
+
;; Drop privileges and init state directory in a new
;; process. Wait for it to finish before proceeding.
(match (primitive-fork)
diff --git a/gnu/tests/guix.scm b/gnu/tests/guix.scm
index af7d8f0..219b8b4 100644
--- a/gnu/tests/guix.scm
+++ b/gnu/tests/guix.scm
@@ -164,7 +164,10 @@
"
local all all trust
host all all 127.0.0.1/32 trust
-host all all ::1/128 trust"))))))
+host all all ::1/128 trust"))
+ ;; XXX: Remove when postgresql default socket directory is
+ ;; changed to /var/run/postgresql.
+ (socket-directory #f)))))
(service guix-data-service-type
(guix-data-service-configuration
(host "0.0.0.0")))
diff --git a/gnu/tests/monitoring.scm b/gnu/tests/monitoring.scm
index 7371b02..c21bb1e 100644
--- a/gnu/tests/monitoring.scm
+++ b/gnu/tests/monitoring.scm
@@ -309,7 +309,12 @@ zabbix||{}
(service dhcp-client-service-type)
(service postgresql-service-type
(postgresql-configuration
- (postgresql postgresql-10)))
+ (postgresql postgresql-10)
+ ;; XXX: Remove when postgresql default socket directory is
+ ;; changed to /var/run/postgresql.
+ (config-file
+ (postgresql-config-file
+ (socket-directory #f)))))
(service zabbix-front-end-service-type
(zabbix-front-end-configuration
(db-password "zabbix")))
diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm
index 7f4518a..cc0e79c 100644
--- a/gnu/tests/web.scm
+++ b/gnu/tests/web.scm
@@ -569,7 +569,12 @@ HTTP-PORT."
(listen '("8080"))))))
(service postgresql-service-type
(postgresql-configuration
- (postgresql postgresql-10)))
+ (postgresql postgresql-10)
+ ;; XXX: Remove when postgresql default socket directory is
+ ;; changed to /var/run/postgresql.
+ (config-file
+ (postgresql-config-file
+ (socket-directory #f)))))
(service patchwork-service-type
(patchwork-configuration
(patchwork patchwork)
- branch master updated (ff0ff69 -> f58d071), guix-commits, 2021/01/28
- 02/08: services: postgresql: Add socket directory support.,
guix-commits <=
- 03/08: services: postgresql: Add log directory support., guix-commits, 2021/01/28
- 06/08: service: cuirass: Update it., guix-commits, 2021/01/28
- 04/08: services: postgresql: Wrap long lines., guix-commits, 2021/01/28
- 08/08: tests: Add cuirass test., guix-commits, 2021/01/28
- 01/08: services: postgresql: Use Guile datatypes., guix-commits, 2021/01/28
- 05/08: services: postgresql: Add postgresql-role-service-type., guix-commits, 2021/01/28
- 07/08: services: cuirass: Add remote build support., guix-commits, 2021/01/28