marvel-nccr.slurm
Ansible Rolle: marvel-nccr.slurm
Eine Ansible Rolle, die den slurm Job-Manager auf Ubuntu installiert (getestet auf 16.04, 18.04 und 20.04).
Hinweis: Diese Rolle konfiguriert die Maschine, auf der Slurm läuft, auch als Rechenknoten (sie enthält z.B. eine Autodetektion für die #CPUs auf der Maschine, auf der sie ausgeführt wird). Bisher ist die Rolle nicht dafür ausgelegt, ein Cluster mit mehreren Rechenknoten einzurichten. Dafür können Tools wie https://github.com/elasticluster/elasticluster verwendet werden.
Die Rolle:
- Installiert die Slurm-Pakete
- Richtet die Slurm-Konfiguration (
/etc/slurm-llnl/slurm.conf
) ein, um dynamisch die richtigen Plattformressourcen (Hostname, #CPUs usw.) zu nutzen, und konfiguriert einen Knoten (genannt$HOSTNAME
) und eine Partition (genanntslurm_partition_name
). - Fügt ein Skript
slurm-resources
und einen Startdienst hinzu, um die Initiierung der richtigen Plattformressourcen zu automatisieren (notwendig, wenn ein VM-Image erstellt wird, bei dem Instanzen unterschiedliche Ressourcen haben können). - Startet die Slurm-Dienste.
Um zu überprüfen, ob die Dienste laufen (unter der Annahme, dass systemd verwendet wird):
$ systemctl --type=service
...
slurmctld.service geladen aktiv laufend Slurm-Controller-Daemon
slurmd.service geladen aktiv laufend Slurm-Knoten-Daemon
...
Um den Slurm-Knoten/die Partition zu überprüfen:
$ scontrol show node
$ scontrol show partition
Dies sollte mit den in lscpu
angegebenen Ressourcen übereinstimmen.
Um den Startdienst slurm-resources
zu aktivieren/deaktivieren:
$ systemctl enable slurm-resources
Um die Ressourcen-Konfiguration von Slurm direkt zu ändern, können Sie z.B. Folgendes verwenden:
$ slurm-resources -e restart_on_change=true -e slurm_max_cpus=2
Dies aktualisiert die für den Knoten definierten Ressourcen, setzt die maximalen CPUs für die Partition auf 2 (unabhängig von den verfügbaren CPUs auf dem Knoten) und startet die Slurm-Dienste mit der aktualisierten Konfiguration neu (wenn sich die Konfiguration geändert hat).
Installation
ansible-galaxy install marvel-nccr.slurm
Rollenvariablen
Siehe defaults/main.yml
Beispiel-Playbook
- hosts: servers
roles:
- role: marvel-nccr.slurm
Entwicklung und Test
Diese Rolle verwendet Molecule und Docker für Tests.
Nachdem Sie Docker installiert haben:
Klonen Sie das Repository in ein Paket mit dem Namen marvel-nccr.slurm
(der Ordner muss den gleichen Namen wie der Ansible Galaxy-Name haben)
git clone https://github.com/marvel-nccr/ansible-role-slurm marvel-nccr.slurm
cd marvel-nccr.slurm
Führen Sie dann Folgendes aus:
pip install -r requirements.txt # Installiert Molecule
molecule test # führt Tests aus
oder verwenden Sie tox (siehe tox.ini
):
pip install tox
tox
Code-Stil
Der Code-Stil wird mit pre-commit formatiert und überprüft.
pip install pre-commit
pre-commit run -all
Bereitstellung
Die Bereitstellung an Ansible Galaxy erfolgt automatisch über GitHub Actions.
Tagsen Sie einfach eine Version vX.Y.Z
, um den CI- und Release-Workflow zu starten.
Hinweis: Die Veröffentlichung wird nur abgeschlossen, wenn die CI-Tests bestanden sind.
Lizenz
MIT
Kontakt
Bitte richten Sie Anfragen zu Quantum Mobile und zugehörigen Ansible-Rollen an die AiiDA Mailingliste.
An Ansible role that installs the [slurm](https://slurm.schedmd.com/) workload manager on Ubuntu.
ansible-galaxy install marvel-nccr.slurm