marvel-nccr.slurm
Rol de Ansible: marvel-nccr.slurm
Una rol de Ansible que instala el gestor de carga de trabajo slurm en Ubuntu (probado en 16.04, 18.04 y 20.04).
Nota: Esta rol configura la máquina en la que se ejecuta slurm para que también sea el nodo de computación (por lo tanto, contiene, por ejemplo, alguna capacidad de autodetección sobre #CPUs en la máquina donde se ejecuta). Hasta ahora, la rol no está diseñada para configurar un clúster de computación con múltiples nodos; para esto, consulte herramientas como https://github.com/elasticluster/elasticluster.
La rol:
- Instala los paquetes de slurm
- Configura la configuración de slurm (
/etc/slurm-llnl/slurm.conf
) para utilizar dinámicamente los recursos de plataforma correctos (nombre de host, #CPUs, etc.), configurando un nodo (llamado$HOSTNAME
) y una partición (llamadaslurm_partition_name
). - Agrega un script
slurm-resources
y un servicio de inicio para automatizar la iniciación de los recursos de plataforma correctos (requerido si se crea una imagen de VM donde las instancias pueden tener recursos diferentes) - Inicia los servicios de slurm.
Para verificar que los servicios están en funcionamiento (suponiendo que se usa systemd):
$ systemctl --type=service
...
slurmctld.service loaded active running Daemon de control de Slurm
slurmd.service loaded active running Daemon de nodo de Slurm
...
Para verificar el nodo/partición de slurm:
$ scontrol show node
$ scontrol show partition
Esto debería coincidir con los recursos dados en lscpu
.
Para habilitar/deshabilitar el servicio de inicio slurm-resources
:
$ systemctl enable slurm-resources
Para alterar la configuración de recursos de slurm directamente, puedes usar, por ejemplo:
$ slurm-resources -e restart_on_change=true -e slurm_max_cpus=2
Esto actualizará los recursos definidos para el nodo, establecerá la cantidad máxima de CPUs para la partición a 2 (independientemente de los CPUs disponibles en el nodo) y reiniciará los servicios de slurm con la configuración actualizada (si ha cambiado la configuración).
Instalación
ansible-galaxy install marvel-nccr.slurm
Variables de Rol
Consulta defaults/main.yml
Ejemplo de Playbook
- hosts: servidores
roles:
- role: marvel-nccr.slurm
Desarrollo y pruebas
Esta rol utiliza Molecule y Docker para las pruebas.
Después de instalar Docker:
Clona el repositorio en un paquete llamado marvel-nccr.slurm
(la carpeta debe llamarse igual que el nombre en Ansible Galaxy)
git clone https://github.com/marvel-nccr/ansible-role-slurm marvel-nccr.slurm
cd marvel-nccr.slurm
Luego ejecuta:
pip install -r requirements.txt # Instala molecule
molecule test # ejecuta pruebas
o utiliza tox (consulta tox.ini
):
pip install tox
tox
Estilo de código
El estilo de código se formatea y se revisa con pre-commit.
pip install pre-commit
pre-commit run --all
Despliegue
El despliegue en Ansible Galaxy está automatizado a través de GitHub Actions.
Simplemente etiqueta una versión como vX.Y.Z
para iniciar el flujo de trabajo de CI y liberación.
Nota, la liberación solo se completará si las pruebas de CI pasan.
Licencia
MIT
Contacto
Por favor dirija las consultas sobre Quantum Mobile y las roles de ansible asociadas a la lista de correo de AiiDA.
An Ansible role that installs the [slurm](https://slurm.schedmd.com/) workload manager on Ubuntu.
ansible-galaxy install marvel-nccr.slurm