galaxyproject.slurm
Slurm
Installer et configurer un cluster Slurm sur des serveurs RHEL/CentOS ou Debian/Ubuntu
Variables de rôle
Toutes les variables sont optionnelles. Si rien n'est défini, le rôle installera les programmes clients Slurm, munge, et
créera un slurm.conf
avec un seul nœud localhost
et une partition debug
.
Voir les par défaut et exemples de playbooks pour plus d'exemples.
Pour les différents rôles qu'un nœud Slurm peut jouer, vous pouvez soit définir des noms de groupe, soit ajouter des valeurs à une liste, slurm_roles
.
- groupe slurmservers ou
slurm_roles: ['controller']
- groupe slurmexechosts ou
slurm_roles: ['exec']
- groupe slurmdbdservers ou
slurm_roles: ['dbd']
Les options de configuration générales pour slurm.conf vont dans slurm_config
, un hash. Les clés sont des noms d'options de configuration Slurm.
Les partitions et nœuds vont dans slurm_partitions
et slurm_nodes
, des listes de hashes. La seule clé requise dans le hash est name
, qui devient PartitionName
ou NodeName
pour cette ligne. Toutes les autres clés/valeurs sont ajoutées à la ligne de cette partition ou nœud.
Les options pour les fichiers de configuration supplémentaires acct_gather.conf,
cgroup.conf et gres.conf
peuvent être spécifiées dans slurm_acct_gather_config
, slurm_cgroup_config
(tous deux des hashes) et
slurm_gres_config
(liste de hashes) respectivement.
Définissez slurm_upgrade
à true pour mettre à jour les paquets Slurm installés.
Vous pouvez utiliser slurm_user
(un hash) et slurm_create_user
(un bool) pour pré-créer un utilisateur Slurm afin que les uid correspondent.
Notez que ce rôle nécessite un accès root, donc activez become
soit globalement dans votre playbook / sur la ligne de commande, soit juste pour le rôle comme indiqué ci-dessous.
Dépendances
Aucune.
Exemples de Playbooks
Configuration minimale, tous les services sur un nœud :
- name: Slurm tout en un
hosts: all
vars:
slurm_roles: ['controller', 'exec', 'dbd']
roles:
- role: galaxyproject.slurm
become: True
Exemple plus complet :
- name: Nœuds d'exécution Slurm
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: "Gestionnaire de charge de travail Slurm"
gid: 888
group: slurm
home: "/var/lib/slurm"
name: slurm
shell: "/usr/sbin/nologin"
uid: 888
Licence
MIT
Informations sur les auteurs
ansible-galaxy install galaxyproject.slurm