stackhpc.openhpc
stackhpc.openhpc
Ce rôle Ansible installe des paquets et effectue des configurations pour fournir un cluster Slurm OpenHPC v2.x.
En tant que rôle, il doit être utilisé à partir d'un playbook, pour lequel un exemple simple est donné ci-dessous. Cette approche rend le système totalement modulaire sans hypothèses sur les réseaux disponibles ou sur d'autres caractéristiques du cluster, si ce n'est quelques conventions de nommage. Tout système de fichiers de cluster ou autre fonctionnalité requise peut être intégré librement en utilisant des rôles Ansible supplémentaires ou d'autres méthodes.
L'image minimale pour les nœuds est une image GenericCloud RockyLinux 8.
Variables du rôle
openhpc_extra_repos
: Liste optionnelle. Définitions de dépôts Yum supplémentaires à configurer, suivant le format du module Ansible yum_repository. Clés respectées pour chaque élément de la liste :
name
: Obligatoiredescription
: Optionnellefile
: Obligatoirebaseurl
: Optionnellemetalink
: Optionnellemirrorlist
: Optionnellegpgcheck
: Optionnellegpgkey
: Optionnelle
openhpc_slurm_service_enabled
: booléen, s'il faut activer le service Slurm approprié (slurmd/slurmctld).
openhpc_slurm_service_started
: Booléen optionnel. S'il faut démarrer les services Slurm. Si défini sur faux, tous les services seront arrêtés. Par défaut, cela correspond à openhpc_slurm_service_enabled
.
openhpc_slurm_control_host
: Chaîne requise. Nom d'hôte Ansible (et nom d'hôte court) du contrôleur, par exemple "{{ groups['cluster_control'] | first }}"
.
openhpc_slurm_control_host_address
: Chaîne optionnelle. Adresse IP ou nom à utiliser pour le openhpc_slurm_control_host
, par exemple, pour utiliser une interface différente de celle résolue par openhpc_slurm_control_host
.
openhpc_packages
: paquets OpenHPC supplémentaires à installer.
openhpc_enable
:
control
: s'il faut activer l'hôte de contrôledatabase
: s'il faut activer slurmdbdbatch
: s'il faut activer les nœuds de calculruntime
: s'il faut activer le runtime OpenHPC
openhpc_slurmdbd_host
: Optionnel. Où déployer slurmdbd si vous utilisez ce rôle pour déployer slurmdbd, sinon où un slurmdbd existant fonctionne. Cela doit être le nom d'un hôte de votre inventaire. Réglez ceci sur none
pour empêcher le rôle de gérer slurmdbd. Par défaut, cela correspond à openhpc_slurm_control_host
.
openhpc_slurm_configless
: Optionnel, par défaut faux. Si vrai, le mode "configless" de Slurm est utilisé.
openhpc_munge_key
: Optionnel. Définir une clé munge à utiliser. Si non fournie, une clé est générée, mais l'openhpc_slurm_control_host
doit être présent dans le play.
openhpc_login_only_nodes
: Optionnel. Si vous utilisez le mode "configless", spécifiez le nom d'un groupe Ansible contenant des nœuds qui sont uniquement des nœuds de connexion (c'est-à-dire pas aussi des nœuds de contrôle), si nécessaire. Ces nœuds exécuteront slurmd
pour contacter le nœud de contrôle pour la configuration.
openhpc_module_system_install
: Optionnel, par défaut vrai. S'il faut ou non installer un système de modules d'environnement. Si vrai, lmod sera installé. Si faux, vous pouvez soit fournir votre propre système de modules, soit ne pas en utiliser.
slurm.conf
openhpc_slurm_partitions
: Optionnel. Liste d'une ou plusieurs partitions Slurm, par défaut []
. Chaque partition peut contenir les valeurs suivantes :
groups
: S'il y a plusieurs groupes de nœuds qui composent la partition, une liste d'objets de groupe peut être définie ici. Sinon,groups
peut être omis et les attributs suivants peuvent être définis dans l'objet de partition :name
: Le nom des nœuds dans ce groupe.cluster_name
: Optionnel. Une substitution pour la définition supérieureopenhpc_cluster_name
.extra_nodes
: Optionnel. Liste de définitions de nœuds supplémentaires, par exemple pour des nœuds dans ce groupe/partition non contrôlés par ce rôle. Chaque élément doit être un dict, avec des clés/valeurs suivant la documentation pour slurm.conf. Notez que la cléNodeName
doit être en premier.ram_mb
: Optionnel. La RAM physique disponible dans chaque nœud de ce groupe (paramètreRealMemory
dans slurm.conf) en MiB. Cela est défini en utilisant des faits Ansible s'il n'est pas défini, équivalent àfree --mebi
total *openhpc_ram_multiplier
.ram_multiplier
: Optionnel. Une substitution pour la définition supérieureopenhpc_ram_multiplier
. N'a aucun effet siram_mb
est défini.gres
: Optionnel. Liste de dicts définissant des ressources génériques. Chaque dict doit définir :conf
: Une chaîne avec la spécification de la ressource mais nécessitant le format<name>:<type>:<number>
, par exemplegpu:A100:2
. Notez que letype
est une chaîne arbitraire.file
: Une chaîne avec le Fichier (chemin vers le dispositif) pour cette ressource, par exemple/dev/nvidia[0-1]
pour l'exemple ci-dessus.
Notez que GresTypes doit être défini dans
openhpc_config
si cela est utilisé.
default
: Optionnel. Un indicateur booléen pour indiquer si cette partition est la par défaut. Les réglages valides sontYES
etNO
.maxtime
: Optionnel. Limite de temps spécifique à la partition suivant le format du paramètre MaxTime dans slurm.conf. La valeur par défaut est donnée paropenhpc_job_maxtime
. La valeur doit être entre guillemets pour éviter les conversions Ansible.partition_params
: Optionnel. Mapping de paramètres et valeurs supplémentaires pour la configuration de la partition.
Pour chaque groupe (si utilisé) ou partition, les nœuds dans un groupe d'inventaire Ansible <cluster_name>_<group_name>
seront ajoutés au groupe/partition. Notez que :
- Les nœuds peuvent avoir des noms d'hôtes arbitraires, mais ceux-ci doivent être en minuscules pour éviter une discordance entre l'inventaire et le nom d'hôte réel.
- Les nœuds d'un groupe sont supposés être homogènes en termes de processeur et de mémoire.
- Un groupe d'inventaire peut être vide ou manquant, mais s'il n'est pas, le play doit contenir au moins un nœud de celui-ci (utilisé pour définir les informations du processeur).
- Les nœuds ne peuvent pas apparaître dans plus d'un groupe.
openhpc_job_maxtime
: Limite de temps maximale pour un job, par défaut '60-0'
(60 jours). Voir le paramètre MaxTime
dans slurm.conf pour le format. La valeur par défaut est 60 jours. La valeur doit être entre guillemets pour éviter les conversions Ansible.
openhpc_cluster_name
: nom du cluster.
openhpc_config
: Optionnel. Mapping de paramètres et valeurs supplémentaires pour slurm.conf
. Notez que ceux-ci remplaceront tout ce qui est inclus dans templates/slurm.conf.j2
.
openhpc_ram_multiplier
: Optionnel, par défaut 0.95
. Multiplicateur utilisé dans le calcul : total_memory * openhpc_ram_multiplier
lors de la définition de RealMemory
pour la partition dans slurm.conf. Peut être remplacé sur une base de partition en utilisant openhpc_slurm_partitions.ram_multiplier
. N'a aucun effet si openhpc_slurm_partitions.ram_mb
est défini.
openhpc_state_save_location
: Optionnel. Chemin absolu pour l'état du contrôleur Slurm (paramètre StateSaveLocation
dans slurm.conf)
Comptabilité
Par défaut, aucun stockage de comptabilité n'est configuré. Les clusters OpenHPC v1.x et OpenHPC v2.0 non mis à jour prennent en charge le stockage de comptabilité basé sur des fichiers, qui peut être sélectionné en définissant la variable de rôle openhpc_slurm_accounting_storage_type
sur accounting_storage/filetxt
1. La comptabilité pour les clusters OpenHPC v2.1 et OpenHPC v2.0 mis à jour nécessite le démon de base de données Slurm, slurmdbd
(bien que l'achèvement des travaux puisse être une alternative limitée, voir ci-dessous. Pour activer la comptabilité :
- Configurez un serveur mariadb ou mysql comme décrit dans la documentation sur la comptabilité Slurm documentation sur l'un des nœuds de votre inventaire et définissez
openhpc_enable.database
surtrue
pour ce nœud. - Définissez
openhpc_slurm_accounting_storage_type
suraccounting_storage/slurmdbd
. - Configurez les variables pour
slurmdbd.conf
ci-dessous.
Le rôle se chargera de configurer les variables suivantes pour vous :
openhpc_slurm_accounting_storage_host
: Où le service de stockage de comptabilité fonctionne, c'est-à-dire où slurmdbd fonctionne.
openhpc_slurm_accounting_storage_port
: Quel port utiliser pour se connecter au stockage de comptabilité.
openhpc_slurm_accounting_storage_user
: Nom d'utilisateur pour l'authentification avec le stockage de comptabilité.
openhpc_slurm_accounting_storage_pass
: Clé Munge ou mot de passe de la base de données à utiliser pour l'authentification.
Pour une personnalisation plus avancée ou pour configurer un autre type de stockage, vous voudrez peut-être modifier ces valeurs manuellement.
Comptabilité des jobs
Ceci est en grande partie redondant si vous utilisez le plugin de comptabilité ci-dessus, mais vous donnera des données de comptabilité de base telles que les heures de début et de fin. Par défaut, aucune comptabilité de job n'est configurée.
openhpc_slurm_job_comp_type
: Mécanisme de journalisation pour la comptabilité des jobs. Peut être l'un de jobcomp/filetxt
, jobcomp/none
, jobcomp/elasticsearch
.
openhpc_slurm_job_acct_gather_type
: Mécanisme de collecte des données de comptabilité des jobs. Peut être l'un de jobacct_gather/linux
, jobacct_gather/cgroup
et jobacct_gather/none
.
openhpc_slurm_job_acct_gather_frequency
: Période d'échantillonnage pour la comptabilité des jobs (secondes).
openhpc_slurm_job_comp_loc
: Emplacement pour stocker les enregistrements de comptabilité des jobs. Dépend de la valeur de openhpc_slurm_job_comp_type
, par exemple pour jobcomp/filetxt
, cela représente un chemin sur le disque.
slurmdbd.conf
Les options suivantes affectent slurmdbd.conf
. Veuillez consulter la documentation pour plus de détails.
Vous devrez configurer ces variables si vous avez défini openhpc_enable.database
sur true
.
openhpc_slurmdbd_port
: Port sur lequel slurmdb écoute, par défaut 6819
.
openhpc_slurmdbd_mysql_host
: Nom d'hôte ou IP où mariadb fonctionne, par défaut openhpc_slurm_control_host
.
openhpc_slurmdbd_mysql_database
: Base de données à utiliser pour la comptabilité, par défaut slurm_acct_db
.
openhpc_slurmdbd_mysql_password
: Mot de passe pour l'authentification avec la base de données. Vous devez définir cette variable.
openhpc_slurmdbd_mysql_username
: Nom d'utilisateur pour l'authentification avec la base de données, par défaut slurm
.
Exemple d'inventaire
Et un inventaire Ansible comme ceci :
[openhpc_login]
openhpc-login-0 ansible_host=10.60.253.40 ansible_user=centos
[openhpc_compute]
openhpc-compute-0 ansible_host=10.60.253.31 ansible_user=centos
openhpc-compute-1 ansible_host=10.60.253.32 ansible_user=centos
[cluster_login:children]
openhpc_login
[cluster_control:children]
openhpc_login
[cluster_batch:children]
openhpc_compute
Exemples de playbooks
Pour déployer, créez un playbook qui ressemble à ceci :
---
- hosts:
- cluster_login
- cluster_control
- cluster_batch
become: yes
roles:
- role: openhpc
openhpc_enable:
control: "{{ inventory_hostname in groups['cluster_control'] }}"
batch: "{{ inventory_hostname in groups['cluster_batch'] }}"
runtime: true
openhpc_slurm_service_enabled: true
openhpc_slurm_control_host: "{{ groups['cluster_control'] | first }}"
openhpc_slurm_partitions:
- name: "compute"
openhpc_cluster_name: openhpc
openhpc_packages: []
...
1 Slurm 20.11 a supprimé accounting_storage/filetxt
en tant qu'option. Cette version de Slurm a été introduite dans OpenHPC v2.1, mais les dépôts OpenHPC sont communs à toutes les versions OpenHPC v2.x. ↩
This role provisions an exisiting cluster to support OpenHPC control and batch compute functions and installs necessary runtime packages.
ansible-galaxy install stackhpc.openhpc