diff options
| author | Oleg Pykhalov <go.wigust@gmail.com> | 2018-07-28 01:08:47 +0300 |
|---|---|---|
| committer | Oleg Pykhalov <go.wigust@gmail.com> | 2018-08-01 03:24:42 +0300 |
| commit | 31f38400bb782833c3a6f3fa28f22171c359ddcc (patch) | |
| tree | 98a1a2254e5637631b70a6a98f75b264c3445af7 | |
| parent | wigust: cdrkit-libre: Apply Guix suggestions. (diff) | |
| download | guix-wigust-31f38400bb782833c3a6f3fa28f22171c359ddcc.tar.gz | |
wigust: services: Update zabbix service.
* wigust/services/monitoring.scm: Update zabbix service.
| -rw-r--r-- | wigust/services/monitoring.scm | 109 |
1 files changed, 82 insertions, 27 deletions
diff --git a/wigust/services/monitoring.scm b/wigust/services/monitoring.scm index 9d45478..b88f6a1 100644 --- a/wigust/services/monitoring.scm +++ b/wigust/services/monitoring.scm @@ -26,33 +26,34 @@ #:use-module (guix gexp) #:use-module (guix records) #:use-module (ice-9 match) - #:export (zabbix-service-type)) + #:export (zabbix-server-service-type + zabbix-agentd-service-type)) -(define (uglify-field-name field-name) - (string-delete #\? (symbol->string field-name))) - -(define (serialize-field field-name val) - (format #t "~a=~a\n" (uglify-field-name field-name) val)) - -(define (serialize-string field-name val) - (if (and (string? val) (string=? val "")) - "" - (serialize-field field-name val))) +(define (zabbix-server-account config) + "Return the user accounts and user groups for CONFIG." + (let ((zabbix-user "zabbix") + (zabbix-group "zabbix")) + (list (user-group (name zabbix-group) (system? #t)) + (user-account + (name zabbix-user) + (system? #t) + (group zabbix-group) + (comment "zabbix privilege separation user") + (home-directory (string-append "/var/run/" zabbix-user)) + (shell #~(string-append #$shadow "/sbin/nologin")))))) -;; (define-configuration zabbix-configuration -;; (state-directory -;; (string "/var/run/zabbix") -;; "") -;; (log-directory -;; (string "/var/log/zabbix") -;; "") -;; (library-directory -;; (string "/var/lib/zabbix") -;; "") -;; (pid-file -;; (string "/var/run/zabbix/zabbix_server.pid"))) +(define (zabbix-server-activation config) + "Return the activation GEXP for CONFIG." + #~(begin + (use-modules (guix build utils)) + (let ((user (getpw "zabbix")) + (group (getpw "zabbix"))) + (let ((dir "/var/run/zabbix")) + (mkdir-p dir) + (chmod dir #o700) + (chown dir (passwd:uid user) (group:gid group)))))) -(define (zabbix-account config) +(define (zabbix-agentd-account config) "Return the user accounts and user groups for CONFIG." (let ((zabbix-user "zabbix") (zabbix-group "zabbix")) @@ -65,9 +66,63 @@ (home-directory (string-append "/var/run/" zabbix-user)) (shell #~(string-append #$shadow "/sbin/nologin")))))) -(define zabbix-service-type +(define (zabbix-agentd-activation config) + "Return the activation GEXP for CONFIG." + #~(begin + (use-modules (guix build utils)) + (let ((user (getpw "zabbix")) + (group (getpw "zabbix"))) + (let ((dir "/var/run/zabbix")) + (mkdir-p dir) + (chmod dir #o700) + (chown dir (passwd:uid user) (group:gid group)))))) + +(define (zabbix-server-shepherd-service config) + "Return a <shepherd-service> for Zabbix server with CONFIG." + (list (shepherd-service + (provision '(zabbix-server)) + (documentation "Run zabbix daemon.") + (start #~(make-forkexec-constructor + (list #$(file-append zabbix "/sbin/zabbix_server") + "--config" "/etc/zabbix/zabbix_server.conf") + #:user "zabbix" + #:group "zabbix" + #:pid-file "/var/run/zabbix/zabbix_server.pid")) + (stop #~(make-kill-destructor))))) + +(define (zabbix-agentd-shepherd-service config) + "Return a <shepherd-service> for Zabbix agent with CONFIG." + (list (shepherd-service + (provision '(zabbix-agentd)) + (documentation "Run zabbix daemon.") + (start #~(make-forkexec-constructor + (list #$(file-append zabbix "/sbin/zabbix_agentd") + "--config" "/etc/zabbix/zabbix_agentd.conf") + #:user "zabbix" + #:group "zabbix" + #:pid-file "/var/run/zabbix/zabbix_agentd.pid")) + (stop #~(make-kill-destructor))))) + +(define zabbix-server-service-type + (service-type + (name 'zabbix-server) + (extensions + (list (service-extension shepherd-root-service-type + zabbix-server-shepherd-service) + (service-extension account-service-type + zabbix-server-account) + (service-extension activation-service-type + zabbix-server-activation))) + (default-value '()))) + +(define zabbix-agentd-service-type (service-type - (name 'zabbix) + (name 'zabbix-agentd) (extensions - (list (service-extension account-service-type zabbix-account))) + (list (service-extension shepherd-root-service-type + zabbix-agentd-shepherd-service) + (service-extension account-service-type + zabbix-agentd-account) + (service-extension activation-service-type + zabbix-agentd-activation))) (default-value '()))) |
