marvel-nccr.slurm
Rôle Ansible : marvel-nccr.slurm
Un rôle Ansible qui installe le gestionnaire de charge de travail slurm sur Ubuntu (testé sur 16.04, 18.04 et 20.04).
Remarque : Ce rôle configure la machine sur laquelle slurm est exécuté pour également être le nœud de calcul (il contient donc, par exemple, une certaine capacité d'autodétection autour du nombre de CPU sur la machine où il est exécuté). Jusqu'à présent, le rôle n'est pas encore conçu pour configurer un cluster de calcul avec plusieurs nœuds. Pour cela, voir par exemple des outils comme https://github.com/elasticluster/elasticluster.
Le rôle :
- Installe les paquets slurm
- Configure le fichier de configuration slurm (
/etc/slurm-llnl/slurm.conf
) pour utiliser dynamiquement les ressources de la plateforme (nom d'hôte, nombre de CPU, etc.), configurant un nœud (nommé$HOSTNAME
) et une partition (nomméeslurm_partition_name
). - Ajoute un script
slurm-resources
et un service de démarrage pour automatiser l'initialisation des ressources de plateforme correctes (nécessaire si la création d'une image de VM où les instances peuvent avoir des ressources différentes). - Démarre les services slurm.
Pour vérifier que les services sont en cours d'exécution (en supposant que systemd est utilisé) :
$ systemctl --type=service
...
slurmctld.service chargé actif en cours d'exécution Démon contrôleur Slurm
slurmd.service chargé actif en cours d'exécution Démon nœud Slurm
...
Pour vérifier le nœud/partition slurm :
$ scontrol show node
$ scontrol show partition
Cela devrait correspondre aux ressources indiquées dans lscpu
.
Pour activer/désactiver le service de démarrage slurm-resources
:
$ systemctl enable slurm-resources
Pour modifier la configuration des ressources de slurm directement, vous pouvez utiliser par exemple :
$ slurm-resources -e restart_on_change=true -e slurm_max_cpus=2
Cela mettra à jour les ressources définies pour le nœud, fixera le nombre maximal de CPU pour la partition à 2 (indépendamment des CPU disponibles sur le nœud), et redémarrera les services slurm avec la nouvelle configuration (si la configuration a changé).
Installation
ansible-galaxy install marvel-nccr.slurm
Variables du Rôle
Voir defaults/main.yml
Exemple de Playbook
- hosts: serveurs
roles:
- rôle: marvel-nccr.slurm
Développement et tests
Ce rôle utilise Molecule et Docker pour les tests.
Après avoir installé Docker :
Clonez le dépôt dans un package nommé marvel-nccr.slurm
(le dossier doit avoir le même nom que celui d'Ansible Galaxy)
git clone https://github.com/marvel-nccr/ansible-role-slurm marvel-nccr.slurm
cd marvel-nccr.slurm
Ensuite, exécutez :
pip install -r requirements.txt # Installe molecule
molecule test # exécute les tests
ou utilisez tox (voir tox.ini
) :
pip install tox
tox
Style de code
Le style de code est formaté et vérifié avec pre-commit.
pip install pre-commit
pre-commit run --all
Déploiement
Le déploiement sur Ansible Galaxy est automatisé via GitHub Actions. Il suffit de taguer une version vX.Y.Z
pour initier le flux de travail CI et de publication. Notez que la publication ne sera terminée que si les tests CI passent.
Licence
MIT
Contact
Veuillez diriger vos demandes concernant Quantum Mobile et les rôles ansible associés vers la liste de diffusion AiiDA.
An Ansible role that installs the [slurm](https://slurm.schedmd.com/) workload manager on Ubuntu.
ansible-galaxy install marvel-nccr.slurm