diff options
author | Markus Kowalewski <markus.kowalewski@gmail.com> | 2018-05-24 20:16:01 +0200 |
---|---|---|
committer | Markus Kowalewski <markus.kowalewski@gmail.com> | 2018-06-02 00:17:59 +0200 |
commit | 995d2ec92889bf6c4fb9c5a742ac5e96cee0e677 (patch) | |
tree | cb5b28dcbedf129e5a4ef263ce72e7629bf6f3e2 /nixos | |
parent | b17b44232f5dd69f399c168c0c5ca87c58af0063 (diff) | |
download | nixpkgs-995d2ec92889bf6c4fb9c5a742ac5e96cee0e677.tar nixpkgs-995d2ec92889bf6c4fb9c5a742ac5e96cee0e677.tar.gz nixpkgs-995d2ec92889bf6c4fb9c5a742ac5e96cee0e677.tar.bz2 nixpkgs-995d2ec92889bf6c4fb9c5a742ac5e96cee0e677.tar.lz nixpkgs-995d2ec92889bf6c4fb9c5a742ac5e96cee0e677.tar.xz nixpkgs-995d2ec92889bf6c4fb9c5a742ac5e96cee0e677.tar.zst nixpkgs-995d2ec92889bf6c4fb9c5a742ac5e96cee0e677.zip |
nixos/slurm: Extend configuration options
* Updated SrunX11 option * Added extraPlugstackConfig parameter * Added option enableStools * Add cgroup.conf to module * Fix some typos
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/services/computing/slurm/slurm.nix | 60 |
1 files changed, 52 insertions, 8 deletions
diff --git a/nixos/modules/services/computing/slurm/slurm.nix b/nixos/modules/services/computing/slurm/slurm.nix index 3e513ab1571..82cf429936e 100644 --- a/nixos/modules/services/computing/slurm/slurm.nix +++ b/nixos/modules/services/computing/slurm/slurm.nix @@ -6,7 +6,7 @@ let cfg = config.services.slurm; # configuration file can be generated by http://slurm.schedmd.com/configurator.html - configFile = pkgs.writeText "slurm.conf" + configFile = pkgs.writeTextDir "slurm.conf" '' ${optionalString (cfg.controlMachine != null) ''controlMachine=${cfg.controlMachine}''} ${optionalString (cfg.controlAddr != null) ''controlAddr=${cfg.controlAddr}''} @@ -17,10 +17,25 @@ let ${cfg.extraConfig} ''; - plugStackConfig = pkgs.writeText "plugstack.conf" + plugStackConfig = pkgs.writeTextDir "plugstack.conf" '' ${optionalString cfg.enableSrunX11 ''optional ${pkgs.slurm-spank-x11}/lib/x11.so''} + ${cfg.extraPlugstackConfig} ''; + + + cgroupConfig = pkgs.writeTextDir "cgroup.conf" + '' + ${cfg.extraCgroupConfig} + ''; + + # slurm expects some additional config files to be + # in the same directory as slurm.conf + etcSlurm = pkgs.symlinkJoin { + name = "etc-slurm"; + paths = [ configFile cgroupConfig plugStackConfig ]; + }; + in { @@ -46,7 +61,17 @@ in client = { enable = mkEnableOption "slurm client daemon"; + }; + enableStools = mkOption { + type = types.bool; + default = false; + description = '' + Wether to provide a slurm.conf file. + Enable this option if you do not run a slurm daemon on this host + (i.e. <literal>server.enable</literal> and <literal>client.enable</literal> are <literal>false</literal>) + but you still want to run slurm commands from this host. + ''; }; package = mkOption { @@ -97,7 +122,7 @@ in example = "debug Nodes=linux[1-32] Default=YES MaxTime=INFINITE State=UP"; description = '' Name by which the partition may be referenced. Note that now you have - to write patrition's parameters after the name. + to write the partition's parameters after the name. ''; }; @@ -107,8 +132,8 @@ in description = '' If enabled srun will accept the option "--x11" to allow for X11 forwarding from within an interactive session or a batch job. This activates the - slurm-spank-x11 module. Note that this requires 'services.openssh.forwardX11' - to be enabled on the compute nodes. + slurm-spank-x11 module. Note that this option also enables + 'services.openssh.forwardX11' on the client. ''; }; @@ -130,6 +155,23 @@ in the end of the slurm configuration file. ''; }; + + extraPlugstackConfig = mkOption { + default = ""; + type = types.lines; + description = '' + Extra configuration that will be added to the end of <literal>plugstack.conf</literal>. + ''; + }; + + extraCgroupConfig = mkOption { + default = ""; + type = types.lines; + description = '' + Extra configuration for <literal>cgroup.conf</literal>. This file is + used when <literal>procTrackType=proctrack/cgroup</literal>. + ''; + }; }; }; @@ -142,7 +184,7 @@ in wrappedSlurm = pkgs.stdenv.mkDerivation { name = "wrappedSlurm"; - propagatedBuildInputs = [ cfg.package configFile ]; + propagatedBuildInputs = [ cfg.package etcSlurm ]; builder = pkgs.writeText "builder.sh" '' source $stdenv/setup @@ -155,7 +197,7 @@ in #!/bin/sh if [ -z "$SLURM_CONF" ] then - SLURM_CONF="${configFile}" "$EXE" "\$@" + SLURM_CONF="${etcSlurm}/slurm.conf" "$EXE" "\$@" else "$EXE" "\$0" fi @@ -165,7 +207,7 @@ in ''; }; - in mkIf (cfg.client.enable || cfg.server.enable) { + in mkIf (cfg.enableStools || cfg.client.enable || cfg.server.enable) { environment.systemPackages = [ wrappedSlurm ]; @@ -190,6 +232,8 @@ in ''; }; + services.openssh.forwardX11 = mkIf cfg.client.enable (mkDefault true); + systemd.services.slurmctld = mkIf (cfg.server.enable) { path = with pkgs; [ wrappedSlurm munge coreutils ] ++ lib.optional cfg.enableSrunX11 slurm-spank-x11; |