summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2022-02-07 17:47:23 +0100
committerMarius Bakke <marius@gnu.org>2022-02-07 18:19:46 +0100
commit326e08bf0f55409f040612001f73a2cc4091c159 (patch)
tree014ed8acf60a74943fb201c12ca02a18e9579cbc
parentfda218009b9d80e11bb886a2529e9dde90e88e9c (diff)
services: zabbix-front-end: Restore backwards compatibility.
Commit e301f1a8ed11f9eacb2b7f525a7446dc00621a8b removed the NGINX argument entirely, but users may rely on and override it. Reported by rekado on #guix. * gnu/services/monitoring.scm (%zabbix-front-end-nginx-configuration): Restore exported variable. (zabbix-front-end-nginx-extension): New procedure. (zabbix-front-end-configuration): Remove FASTCGI-PARAMS field. Restore NGINX field, but default to the empty list. (zabbix-front-end-service-type): Extend NGINX-SERVICE-TYPE by ZABBIX-FRONT-END-NGINX-EXTENSION. * doc/guix.texi (Monitoring Services): Regenerate documentation.
-rw-r--r--doc/guix.texi19
-rw-r--r--gnu/services/monitoring.scm38
2 files changed, 42 insertions, 15 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 9d3548aac7..2a9ef75dfd 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -25804,31 +25804,32 @@ Available @code{zabbix-front-end-configuration} fields are:
@item @code{zabbix-server} (default: @code{zabbix-server}) (type: file-like)
The Zabbix server package to use.
-@item @code{fastcgi-params} (type: list)
-List of FastCGI parameter pairs that will be included in the NGINX
-configuration.
+@item @code{nginx} (default: @code{()}) (type: list)
+List of @pxref{NGINX,@code{nginx-server-configuration}} blocks for the
+Zabbix front-end. When empty, a default that listens on port 80 is
+used.
-@item @code{db-host} (default: @code{\"localhost\"}) (type: string)
+@item @code{db-host} (default: @code{"localhost"}) (type: string)
Database host name.
@item @code{db-port} (default: @code{5432}) (type: number)
Database port.
-@item @code{db-name} (default: @code{\"zabbix\"}) (type: string)
+@item @code{db-name} (default: @code{"zabbix"}) (type: string)
Database name.
-@item @code{db-user} (default: @code{\"zabbix\"}) (type: string)
+@item @code{db-user} (default: @code{"zabbix"}) (type: string)
Database user.
-@item @code{db-password} (default: @code{\"\"}) (type: string)
+@item @code{db-password} (default: @code{""}) (type: string)
Database password. Please, use @code{db-secret-file} instead.
-@item @code{db-secret-file} (default: @code{\"\"}) (type: string)
+@item @code{db-secret-file} (default: @code{""}) (type: string)
Secret file which will be appended to @file{zabbix.conf.php} file. This
file contains credentials for use by Zabbix front-end. You are expected
to create it manually.
-@item @code{zabbix-host} (default: @code{\"localhost\"}) (type: string)
+@item @code{zabbix-host} (default: @code{"localhost"}) (type: string)
Zabbix server hostname.
@item @code{zabbix-port} (default: @code{10051}) (type: number)
diff --git a/gnu/services/monitoring.scm b/gnu/services/monitoring.scm
index fb893d87cd..fecb60a04f 100644
--- a/gnu/services/monitoring.scm
+++ b/gnu/services/monitoring.scm
@@ -50,7 +50,8 @@
zabbix-agent-configuration
zabbix-agent-service-type
zabbix-front-end-configuration
- zabbix-front-end-service-type))
+ zabbix-front-end-service-type
+ %zabbix-front-end-configuration-nginx))
;;;
@@ -574,14 +575,39 @@ configuration file."))
fastcgi-params))))))))))
(listen '("80")))))))
+(define %zabbix-front-end-nginx-configuration
+ (nginx-server-configuration
+ (root #~(string-append #$zabbix-server:front-end "/share/zabbix/php"))
+ (index '("index.php"))
+ (locations
+ (let ((php-location (nginx-php-location)))
+ (list (nginx-location-configuration
+ (inherit php-location)
+ (body (append (nginx-location-configuration-body php-location)
+ (list "
+fastcgi_param PHP_VALUE \"post_max_size = 16M
+ max_execution_time = 300\";
+")))))))
+ (listen '("80"))))
+
+(define (zabbix-front-end-nginx-extension config)
+ (match config
+ (($ <zabbix-front-end-configuration> _ server nginx)
+ (if (null? nginx)
+ (list
+ (nginx-server-configuration
+ (inherit %zabbix-front-end-nginx-configuration)
+ (root #~(string-append #$server:front-end "/share/zabbix/php"))))
+ nginx))))
+
(define-configuration zabbix-front-end-configuration
(zabbix-server
(file-like zabbix-server)
"The Zabbix server package to use.")
- (fastcgi-params
- (list '(("post_max_size" . "16M")
- ("max_execution_time" . "300")))
- "List of FastCGI parameter pairs that will be included in the NGINX configuration.")
+ (nginx
+ (list '())
+ "List of @pxref{NGINX, @code{nginx-server-configuration}} blocks for the
+Zabbix front-end. When empty, a default that listens on port 80 is used.")
(db-host
(string "localhost")
"Database host name.")
@@ -686,7 +712,7 @@ $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
(list (service-extension activation-service-type
zabbix-front-end-activation)
(service-extension nginx-service-type
- zabbix-front-end-nginx-configuration)
+ zabbix-front-end-nginx-extension)
;; Make sure php-fpm is instantiated.
(service-extension php-fpm-service-type
(const #t))))