ULHPC / puppet-slurm

A Puppet module designed to configure and manage SLURM(see https://slurm.schedmd.com/), an open source, fault-tolerant, and highly scalable cluster management and job scheduling system for large and small Linux clusters
Apache License 2.0
19 stars 24 forks source link

Add SchedulerParameters to slurm.conf.erb template #13

Closed stevca9 closed 5 years ago

stevca9 commented 6 years ago

Could you please add support for the SchedulerParameters options in slurm.conf?

https://slurm.schedmd.com/slurm.conf.html

We are currently trying to implement some of the backfill features of the SLURM scheduler and would like to have the option to configure this through the module. According to the documentation the SchedulerParameters option can be defined as a comma separated list, so if I could define these parameters as an array of strings in the slurm class, then hopefully each of these parameters wouldn't need its own definition, and there'd only need to be one definition for the SchedulerParameters option.

Thank you!

Falkor commented 5 years ago

Example of hiera setting (multiline YAML with |) (used in tests/vagrant/puppet/hieradata/custom.yaml):

slurm::schedulerparameters:
  - 'sbatch_wait_nodes'
  - 'spec_cores_first'
  - 'sched_min_interval=12'

Which results in the following:

$> vagrant provision --provision-with puppet slurm-master
[...]
==> slurm-master: Info: Applying configuration version '1549121840'
==> slurm-master: Notice: /Stage[main]/Slurm::Config/File[slurm.conf]/content:
==> slurm-master: --- /etc/slurm/slurm.conf 2019-02-02 15:36:12.338590512 +0000
==> slurm-master: +++ /tmp/puppet-file20190202-3981-1k941sj 2019-02-02 15:37:27.881672774 +0000
==> slurm-master: @@ -178,7 +178,7 @@
==> slurm-master:  FastSchedule=1
==> slurm-master:  #SchedulerTimeSlice=30
==> slurm-master:  SchedulerType=sched/backfill
==> slurm-master: -#SchedulerParameters=
==> slurm-master: +SchedulerParameters=sbatch_wait_nodes,spec_cores_first,sched_min_interval=12
==> slurm-master:
==> slurm-master:  # Plugin used to identify which jobs can be preempted in order to start a pending job.
==> slurm-master:  PreemptType=preempt/qos
==> slurm-master:
[...]