summaryrefslogtreecommitdiff
path: root/abbenay/hpc.nix
blob: 2bbd2d58c93a445cc0fcdc3d6b42260e636b5073 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
{ config, lib, pkgs, ... }:

{
  services.munge = {
    enable = true;
    password = "/tmp/munge/key";
  };

  services.slurm = {
    server.enable = true;
    client.enable = true;

    clusterName = "abbenay";

    extraConfig = ''
      # slurm.conf file generated by configurator.html.
      # Put this file on all nodes of your cluster.
      # See the slurm.conf man page for more information.

      SlurmctldHost=abbenay
      MpiDefault=none
      ReturnToService=1
      SwitchType=switch/none
      TaskPlugin=task/affinity

      SrunPortRange=60001-63000

      # TIMERS
      InactiveLimit=0
      KillWait=30
      MinJobAge=300
      SlurmctldTimeout=120
      SlurmdTimeout=300
      Waittime=0

      # SCHEDULING
      SchedulerType=sched/backfill
      SelectType=select/cons_tres

      # LOGGING AND ACCOUNTING
      JobAcctGatherFrequency=30
      JobAcctGatherType=jobacct_gather/linux
      AccountingStorageType=accounting_storage/slurmdbd
      SlurmctldDebug=info
      SlurmctldLogFile=/var/log/slurmctld.log
      SlurmdDebug=info
      SlurmdLogFile=/var/log/slurmd.log

      # COMPUTE NODES
      NodeName=abbenay CPUs=2 State=UNKNOWN
      # NodeName=cyberbox CPUs=1 State=UNKNOWN
      # [add more nodes here]
      PartitionName=debug Nodes=ALL Default=YES MaxTime=INFINITE State=UP
    '';

    dbdserver = {
      enable = true;
      dbdHost = "abbenay";
      extraConfig = ''
        StoragePass=hello
        StoragePort = ${builtins.toString (builtins.head config.services.mysql.settings.mysqld.port)}
      '';
    };
  };

  networking.firewall.allowedTCPPorts = [ 6817 6818 ];
  networking.firewall.allowedTCPPortRanges = [ {
    from = 60001;
    to = 63000;
  } ];

  services.mysql = {
    enable = true;
    package = pkgs.mariadb;
  };
}