diff --git a/glicid/services/parallel.scm b/glicid/services/parallel.scm index a48ad27..02a416f 100644 --- a/glicid/services/parallel.scm +++ b/glicid/services/parallel.scm @@ -1,122 +1,128 @@ (define-module (glicid services parallel) - #:use-module (gnu packages bash) - #:use-module (gnu services) - #:use-module (gnu services shepherd) - #:use-module (gnu system shadow) - #:use-module (guix) - #:use-module (guix build utils) - #:use-module (guix records) - #:use-module (ice-9 match) - #:use-module (gnu packages parallel) - #:use-module (glicid system file-systems) - #:use-module (glicid utils) - #:export ( - munged-configuration - munged-configuration? - munged-service - munged-service-type - slurmdbd-configuration - slurmdbd-configuration? - slurmdbd-service - slurmdbd-service-type - slurmctld-configuration - slurmctld-configuration? - slurmctld-service - slurmctld-service-type - slurmd-configuration - slurmd-configuration? - slurmd-service - slurmd-service-type - %slurm-group - %slurm-account - %slurm-accounts )) + #:use-module (gnu packages bash) + #:use-module (gnu services) + #:use-module (gnu services shepherd) + #:use-module (gnu system shadow) + #:use-module (guix) + #:use-module (guix build utils) + #:use-module (guix records) + #:use-module (ice-9 match) + #:use-module (gnu packages parallel) + #:use-module (glicid system file-systems) + #:use-module (glicid utils) + #:export (munged-configuration munged-configuration? + munged-service + munged-service-type + slurmdbd-configuration + slurmdbd-configuration? + slurmdbd-service + slurmdbd-service-type + slurmctld-configuration + slurmctld-configuration? + slurmctld-service + slurmctld-service-type + slurmd-configuration + slurmd-configuration? + slurmd-service + slurmd-service-type + %slurm-group + %slurm-account + %slurm-accounts)) ; ; Munged ; -(define-record-type* - - munged-configuration make-munged-configuration +(define-record-type* munged-configuration + make-munged-configuration munged-configuration? - (munge munge-configuration-munge (default munge)) - (key-file munged-key-file (default (file-append munge "/etc/munge/munged.key"))) - (log-file munged-log-file (default "/var/log/munged.log"))) + (munge munge-configuration-munge + (default munge)) + (key-file munged-key-file + (default (file-append munge "/etc/munge/munged.key"))) + (log-file munged-log-file + (default "/var/log/munged.log"))) (define munged-service (match-lambda (($ munge key-file log-file) - (list - (shepherd-service - (provision '(munged)) - (documentation "Run munged.") - (requirement '(user-processes)) - (respawn? #t) - (start #~(make-forkexec-constructor - (list - #$(file-append munge "/sbin/munged") - "-F" - "-f" ; until we fix the permissions - "--key-file" #$key-file - ) - #:log-file #$log-file )) - (stop #~(make-kill-destructor))))))) + (list (shepherd-service (provision '(munged)) + (documentation "Run munged.") + (requirement '(user-processes)) + (respawn? #t) + (start #~(make-forkexec-constructor (list #$(file-append + munge + "/sbin/munged") + "-F" "-f" + "--key-file" + #$key-file) + #:log-file #$log-file)) + (stop #~(make-kill-destructor))))))) (define %munged-activation #~(begin (mkdir-p "/var/run/munge") - (mkdir-p "/var/lib/munge") - #t )) + (mkdir-p "/var/lib/munge") #t)) (define munged-service-type - (service-type - (name 'munged) - (extensions (list - (service-extension shepherd-root-service-type munged-service) - (service-extension activation-service-type (const %munged-activation)))) - (description "Run munged"))) + (service-type (name 'munged) + (extensions (list (service-extension + shepherd-root-service-type munged-service) + (service-extension activation-service-type + (const %munged-activation)))) + (description "Run munged"))) ; ; Shared slurm account ; -(define %slurm-group (user-group (name "slurm") (system? #t))) -(define %slurm-account (user-account - (name "slurm") - (group "slurm") - (system? #t) - (comment "slurm server user") - (home-directory "/var/spool/slurm") - (shell (file-append bash "/bin/bash")))) +(define %slurm-group + (user-group + (name "slurm") + (system? #t))) +(define %slurm-account + (user-account + (name "slurm") + (group "slurm") + (system? #t) + (comment "slurm server user") + (uid 721) ;«magic number…» + (home-directory "/var/spool/slurm") + (shell (file-append bash "/bin/bash")))) -(define %slurm-accounts (list %slurm-group %slurm-account)) +(define %slurm-accounts + (list %slurm-group %slurm-account)) ; ; slurmdbd ; -(define-record-type* - - slurmdbd-configuration make-slurmdbd-configuration +(define-record-type* slurmdbd-configuration + make-slurmdbd-configuration slurmdbd-configuration? - (slurm slurm (default slurm)) - (slurmdbd-conf slurmdbd-conf (default (file-append slurm "/etc/slurm/slurmdbd.conf"))) - (log-file log-file (default "/var/log/slurm/slurmdbd.log"))) + (slurm slurm + (default slurm)) + (slurmdbd-conf slurmdbd-conf + (default (file-append slurm "/etc/slurm/slurmdbd.conf"))) + (log-file log-file + (default "/var/log/slurm/slurmdbd.log"))) (define slurmdbd-service (match-lambda (($ slurm slurmdbd-conf log-file) - (list - (shepherd-service - (provision '(slurmdbd)) - (documentation "Run slurmdbd.") - (requirement '(user-processes)) - (respawn? #t) - (start #~(make-forkexec-constructor - (list - #$(file-append slurm "/sbin/slurmdbd") - "-D" ) - #:log-file #$log-file - #:user (passwd:uid (getpwnam "slurm")) - #:group (passwd:gid (getpwnam "slurm")))) - (stop #~(make-kill-destructor))))))) + (list (shepherd-service (provision '(slurmdbd)) + (documentation "Run slurmdbd.") + (requirement '(user-processes)) + (respawn? #t) + (start #~(make-forkexec-constructor (list #$(file-append + slurm + "/sbin/slurmdbd") + "-D") + #:log-file #$log-file + #:user (passwd:uid + (getpwnam + "slurm")) + #:group (passwd:gid + (getpwnam + "slurm")))) + (stop #~(make-kill-destructor))))))) (define %slurmdbd-activation #~(begin @@ -127,57 +133,81 @@ (mkdir-p "/var/spool/slurmctld") (touch "/var/log/slurm/slurmdbd.log") (touch "/var/run/slurmdbd.pid") - (chown "/var/run/slurmdbd.pid" (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) - (chown "/var/log/slurm" (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) - (chown "/var/log/slurm/slurmdbd.log" (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) - (chown "/var/lib/slurm-archives" (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) - (chown "/var/lib/slurm" (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) - (chown "/var/spool/slurmctld" (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) - (chown "/etc/slurm" (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) + (chown "/var/run/slurmdbd.pid" + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) + (chown "/var/log/slurm" + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) + (chown "/var/log/slurm/slurmdbd.log" + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) + (chown "/var/lib/slurm-archives" + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) + (chown "/var/lib/slurm" + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) + (chown "/var/spool/slurmctld" + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) + (chown "/etc/slurm" + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) (for-each (lambda (slurm-file) - (chown slurm-file (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) - (chmod slurm-file #o600) - )(find-files "/etc/slurm/")) - #t )) + (chown slurm-file + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) + (chmod slurm-file #o600)) + (find-files "/etc/slurm/")) + #t)) (define slurmdbd-service-type - (service-type - (name 'slurmdbd) - (extensions (list - (service-extension shepherd-root-service-type slurmdbd-service) - (service-extension activation-service-type (const %slurmdbd-activation)) - (service-extension account-service-type (const %slurm-accounts)))) - (description "Run slurmdbd"))) + (service-type (name 'slurmdbd) + (extensions (list (service-extension + shepherd-root-service-type slurmdbd-service) + (service-extension activation-service-type + (const + %slurmdbd-activation)) + (service-extension account-service-type + (const %slurm-accounts)))) + (description "Run slurmdbd"))) ; ; slurmctld ; -(define-record-type* - - slurmctld-configuration make-slurmctld-configuration +(define-record-type* slurmctld-configuration + make-slurmctld-configuration slurmctld-configuration? - (slurm slurm (default slurm)) - (slurmctld-conf slurmctld-conf (default (file-append slurm "/etc/slurm/slurmctld.conf"))) - (log-file log-file (default "/var/log/slurm/slurmctld.log"))) + (slurm slurm + (default slurm)) + (slurmctld-conf slurmctld-conf + (default (file-append slurm "/etc/slurm/slurmctld.conf"))) + (log-file log-file + (default "/var/log/slurm/slurmctld.log"))) (define slurmctld-service (match-lambda (($ slurm slurmctld-conf log-file) - (list - (shepherd-service - (provision '(slurmctld)) - (documentation "Run slurmctld.") - (requirement '(user-processes)) - (respawn? #t) - (start #~(make-forkexec-constructor - (list - #$(file-append slurm "/sbin/slurmctld") - "-D" "-R" - "-f" #$slurmctld-conf ) - #:log-file #$log-file - #:user (passwd:uid (getpwnam "slurm")) - #:group (passwd:gid (getpwnam "slurm")))) - (stop #~(make-kill-destructor))))))) + (list (shepherd-service (provision '(slurmctld)) + (documentation "Run slurmctld.") + (requirement '(user-processes)) + (respawn? #t) + (start #~(make-forkexec-constructor (list #$(file-append + slurm + "/sbin/slurmctld") + "-D" + "-R" + "-f" + #$slurmctld-conf) + #:log-file #$log-file + #:user (passwd:uid + (getpwnam + "slurm")) + #:group (passwd:gid + (getpwnam + "slurm")))) + (stop #~(make-kill-destructor))))))) (define %slurmctld-activation #~(begin @@ -188,62 +218,97 @@ (mkdir-p "/var/spool/slurmctld") (touch "/var/log/slurm/slurmctld.log") (touch "/var/run/slurmctld.pid") - (chown "/var/log/slurm" (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) - (chown "/var/log/slurm/slurmctld.log" (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) - (chown "/var/run/slurmctld.pid" (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) - (chown "/var/lib/slurm-archives" (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) - (chown "/var/lib/slurm" (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) - (chown "/var/spool/slurmctld" (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) - (chown "/etc/slurm" (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) + (chown "/var/log/slurm" + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) + (chown "/var/log/slurm/slurmctld.log" + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) + (chown "/var/run/slurmctld.pid" + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) + (chown "/var/lib/slurm-archives" + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) + (chown "/var/lib/slurm" + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) + (chown "/var/spool/slurmctld" + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) + (chown "/etc/slurm" + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) (for-each (lambda (slurm-file) - (chown slurm-file (passwd:uid (getpwnam "slurm")) (passwd:gid (getpwnam "slurm"))) - (chmod slurm-file #o600) - )(find-files "/etc/slurm/")) - #t )) + (chown slurm-file + (passwd:uid (getpwnam "slurm")) + (passwd:gid (getpwnam "slurm"))) + (chmod slurm-file #o600)) + (find-files "/etc/slurm/")) + #t)) (define slurmctld-service-type - (service-type - (name 'slurmctld) - (extensions (list - (service-extension shepherd-root-service-type slurmctld-service) - (service-extension activation-service-type (const %slurmctld-activation)) - (service-extension account-service-type (const %slurm-accounts)))) - (description "Run slurmctld"))) + (service-type (name 'slurmctld) + (extensions (list (service-extension + shepherd-root-service-type + slurmctld-service) + (service-extension activation-service-type + (const + %slurmctld-activation)) + (service-extension account-service-type + (const %slurm-accounts)))) + (description "Run slurmctld"))) ; ; slurmd ; -(define-record-type* - - slurmd-configuration make-slurmd-configuration +(define-record-type* slurmd-configuration + make-slurmd-configuration slurmd-configuration? - (slurm slurm (default slurm)) - (slurmd-conf slurmd-conf (default (file-append slurm "/etc/slurm/slurm.conf"))) - (log-file log-file (default "/var/log/slurm/slurmd.log")) - (slurmctld-host slurmctld-host (default #f)) - (log-level log-level (default #f))) + (slurm slurm + (default slurm)) + (slurmd-conf slurmd-conf + (default (file-append slurm "/etc/slurm/slurm.conf"))) + (log-file log-file + (default "/var/log/slurm/slurmd.log")) + (slurmctld-host slurmctld-host + (default #f)) + (log-level log-level + (default #f))) (define slurmd-service (match-lambda - (($ slurm slurmd-conf slurmctld-host log-file log-level) - (list - (shepherd-service - (provision '(slurmd)) - (documentation "Run slurmd.") - (requirement '( user-processes )) - (respawn? #t) - (start #~(make-forkexec-constructor - (list - #$(file-append slurm "/sbin/slurmd") - "-D" - #$@(if slurmctld-host - (list (string-append "--conf-server" slurmctld-host)) - (list (string-append "-f" slurmd-conf))) - #$@(if log-level - (list log-level) - '())) - #:log-file #$log-file )) - (stop #~(make-kill-destructor))))))) + (($ + slurm + slurmd-conf + slurmctld-host + log-file + log-level) + (list (shepherd-service (provision '(slurmd)) + (documentation "Run slurmd.") + (requirement '(user-processes)) + (respawn? #t) + (start #~(make-forkexec-constructor (list #$(file-append + slurm + "/sbin/slurmd") + "-D" + #$@(if + slurmctld-host + (list + (string-append + "--conf-server" + slurmctld-host)) + (list + (string-append + "-f" + slurmd-conf))) + #$@(if + log-level + (list + log-level) + '())) + #:log-file #$log-file)) + (stop #~(make-kill-destructor))))))) (define %slurmd-activation #~(begin @@ -254,13 +319,14 @@ (mkdir-p "/var/spool/slurmd") (touch "/var/log/slurm/slurmd.log") (touch "/var/run/slurmd.pid") - #t )) + #t)) (define slurmd-service-type - (service-type - (name 'slurmd) - (extensions (list - (service-extension shepherd-root-service-type slurmd-service) - (service-extension activation-service-type (const %slurmd-activation)) - (service-extension account-service-type (const %slurm-accounts)))) - (description "Run slurmd"))) + (service-type (name 'slurmd) + (extensions (list (service-extension + shepherd-root-service-type slurmd-service) + (service-extension activation-service-type + (const %slurmd-activation)) + (service-extension account-service-type + (const %slurm-accounts)))) + (description "Run slurmd")))