From 326e08bf0f55409f040612001f73a2cc4091c159 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Mon, 7 Feb 2022 17:47:23 +0100 Subject: 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. --- doc/guix.texi | 19 ++++++++++--------- gnu/services/monitoring.scm | 38 ++++++++++++++++++++++++++++++++------ 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 + (($ _ 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)))) -- cgit v1.2.3