galaxyproject.slurm
Slurm
Installieren und Konfigurieren eines Slurm-Clusters auf RHEL/CentOS oder Debian/Ubuntu-Servern
Rollenvariablen
Alle Variablen sind optional. Wenn nichts festgelegt ist, installiert die Rolle die Slurm-Client-Programme, Munge und erstellt eine slurm.conf
mit einem einzelnen Knoten localhost
und einer debug
Partition. Siehe die Standardeinstellungen und Beispiel-Playbooks für Beispiele.
Für die verschiedenen Rollen, die ein Slurm-Knoten übernehmen kann, können Sie entweder Gruppennamen setzen oder Werte in eine Liste slurm_roles
hinzufügen.
- Gruppe slurmservers oder
slurm_roles: ['controller']
- Gruppe slurmexechosts oder
slurm_roles: ['exec']
- Gruppe slurmdbdservers oder
slurm_roles: ['dbd']
Allgemeine Konfigurationsoptionen für slurm.conf werden in slurm_config
, einem Hash, untergebracht. Die Schlüssel sind die Namen der Slurm-Konfigurationsoptionen.
Partitionen und Knoten gehen in slurm_partitions
und slurm_nodes
, Listen von Hashes. Der einzige erforderliche Schlüssel im Hash ist name
, der zum PartitionName
oder NodeName
für diese Zeile wird. Alle anderen Schlüssel/Werte werden in die Zeile der Partition oder des Knotens eingefügt.
Optionen für die zusätzlichen Konfigurationsdateien acct_gather.conf, cgroup.conf und gres.conf können in slurm_acct_gather_config
, slurm_cgroup_config
(beide Hashes) und slurm_gres_config
(Liste von Hashes) angegeben werden.
Setzen Sie slurm_upgrade
auf true, um die installierten Slurm-Pakete zu aktualisieren.
Sie können slurm_user
(ein Hash) und slurm_create_user
(ein Boolescher Wert) verwenden, um einen Slurm-Benutzer im Voraus zu erstellen, damit die UIDs übereinstimmen.
Bitte beachten Sie, dass diese Rolle Root-Zugriff erfordert, also aktivieren Sie become
entweder global in Ihrem Playbook / in der Befehlszeile oder nur für die Rolle wie unten gezeigt.
Abhängigkeiten
Keine.
Beispiel-Playbooks
Minimale Konfiguration, alle Dienste auf einem Knoten:
- name: Slurm alles in einem
hosts: all
vars:
slurm_roles: ['controller', 'exec', 'dbd']
roles:
- role: galaxyproject.slurm
become: True
Umfangreicheres Beispiel:
- name: Slurm Ausführungsserver
hosts: all
roles:
- role: galaxyproject.slurm
become: True
vars:
slurm_cgroup_config:
CgroupMountpoint: "/sys/fs/cgroup"
CgroupAutomount: yes
ConstrainCores: yes
TaskAffinity: no
ConstrainRAMSpace: yes
ConstrainSwapSpace: no
ConstrainDevices: no
AllowedRamSpace: 100
AllowedSwapSpace: 0
MaxRAMPercent: 100
MaxSwapPercent: 100
MinRAMSpace: 30
slurm_config:
AccountingStorageType: "accounting_storage/none"
ClusterName: cluster
GresTypes: gpu
JobAcctGatherType: "jobacct_gather/none"
MpiDefault: none
ProctrackType: "proctrack/cgroup"
ReturnToService: 1
SchedulerType: "sched/backfill"
SelectType: "select/cons_res"
SelectTypeParameters: "CR_Core"
SlurmctldHost: "slurmctl"
SlurmctldLogFile: "/var/log/slurm/slurmctld.log"
SlurmctldPidFile: "/var/run/slurmctld.pid"
SlurmdLogFile: "/var/log/slurm/slurmd.log"
SlurmdPidFile: "/var/run/slurmd.pid"
SlurmdSpoolDir: "/var/spool/slurmd"
StateSaveLocation: "/var/spool/slurmctld"
SwitchType: "switch/none"
TaskPlugin: "task/affinity,task/cgroup"
TaskPluginParam: Sched
slurm_create_user: yes
slurm_gres_config:
- File: /dev/nvidia[0-3]
Name: gpu
NodeName: gpu[01-10]
Type: tesla
slurm_munge_key: "../../../munge.key"
slurm_nodes:
- name: "gpu[01-10]"
CoresPerSocket: 18
Gres: "gpu:tesla:4"
Sockets: 2
ThreadsPerCore: 2
slurm_partitions:
- name: gpu
Default: YES
MaxTime: UNLIMITED
Nodes: "gpu[01-10]"
slurm_roles: ['exec']
slurm_user:
comment: "Slurm Workload-Manager"
gid: 888
group: slurm
home: "/var/lib/slurm"
name: slurm
shell: "/usr/sbin/nologin"
uid: 888
Lizenz
MIT
Autoreninformationen
ansible-galaxy install galaxyproject.slurm