stackhpc.openhpc
stackhpc.openhpc
Dieses Ansible-Role installiert Pakete und führt Konfigurationen durch, um einen OpenHPC v2.x Slurm-Cluster bereitzustellen.
Als Rolle muss es aus einem Playbook verwendet werden, wofür ein einfaches Beispiel unten gegeben ist. Dieser Ansatz bedeutet, dass es vollkommen modular ist, ohne Annahmen über verfügbare Netzwerke oder Clusterfunktionen, außer einigen Namenskonventionen. Jedes gewünschte Cluster-Dateisystem oder andere erforderliche Funktionen können problemlos integriert werden, indem zusätzliche Ansible-Rollen oder andere Ansätze verwendet werden.
Das minimale Image für Knoten ist ein RockyLinux 8 GenericCloud-Image.
Rollen-Variablen
openhpc_extra_repos
: Optionale Liste. Zusätzliche Yum-Repository-Definitionen zur Konfiguration, die dem Format des Ansible
yum_repository Moduls folgen. Respektierte Schlüssel für jedes Listenelement:
name
: Erforderlichdescription
: Optionalfile
: Erforderlichbaseurl
: Optionalmetalink
: Optionalmirrorlist
: Optionalgpgcheck
: Optionalgpgkey
: Optional
openhpc_slurm_service_enabled
: Boolean, ob der entsprechende Slurm-Dienst (slurmd/slurmctld) aktiviert werden soll.
openhpc_slurm_service_started
: Optionales Boolean. Ob Slurm-Dienste gestartet werden. Wenn auf falsch gesetzt, werden alle Dienste gestoppt. Standardmäßig auf openhpc_slurm_service_enabled
.
openhpc_slurm_control_host
: Erforderlicher String. Ansible-Inventar-Hostname (und Kurznamen) des Controllers, z.B. "{{ groups['cluster_control'] | first }}"
.
openhpc_slurm_control_host_address
: Optionaler String. IP-Adresse oder Name, um openhpc_slurm_control_host
zu verwenden, z.B. um eine andere Schnittstelle als die aus openhpc_slurm_control_host
aufgelöst zu verwenden.
openhpc_packages
: Zusätzliche OpenHPC-Pakete zur Installation.
openhpc_enable
:
control
: ob den Kontroll-Host aktivierendatabase
: ob slurmdbd aktivierenbatch
: ob Rechenknoten aktivierenruntime
: ob OpenHPC-Runtime aktivieren
openhpc_slurmdbd_host
: Optional. Wo slurmdbd bereitgestellt werden soll, wenn diese Rolle verwendet wird, um slurmdbd bereitzustellen, andernfalls wo eine vorhandene slurmdbd läuft. Dies sollte der Name eines Hosts in Ihrem Inventar sein. Setzen Sie dies auf none
, um zu verhindern, dass die Rolle slurmdbd verwaltet. Standardmäßig openhpc_slurm_control_host
.
openhpc_slurm_configless
: Optional, Standard false. Wenn wahr, wird der "configless" Modus von Slurm verwendet.
openhpc_munge_key
: Optional. Definieren Sie einen Munge-Schlüssel zur Verwendung. Wenn nicht bereitgestellt, wird ein Schlüssel generiert, aber openhpc_slurm_control_host
muss im Play enthalten sein.
openhpc_login_only_nodes
: Optional. Wenn der "configless" Modus verwendet wird, geben Sie den Namen einer Ansible-Gruppe an, die Knoten enthält, die nur Anmeldungen gestatten (d.h. keine Kontrollknoten), falls erforderlich. Diese Knoten führen slurmd
aus, um den Kontrollknoten für die Konfiguration zu kontaktieren.
openhpc_module_system_install
: Optional, Standard true. Ob ein Umgebungsmodulsystem installiert werden soll. Wenn wahr, wird lmod installiert. Wenn falsch, können Sie entweder Ihr eigenes Modulsystem bereitstellen oder ganz darauf verzichten.
slurm.conf
openhpc_slurm_partitions
: Optional. Liste von einem oder mehreren Slurm-Partitionen, Standard []
. Jede Partition kann die folgenden Werte enthalten:
groups
: Wenn es mehrere Knotengruppen gibt, die die Partition bilden, kann hier eine Liste von Gruppenobjekten definiert werden. Andernfalls kanngroups
weggelassen werden und die folgenden Attribute können im Partition-Objekt definiert werden:name
: Der Name der Knoten innerhalb dieser Gruppe.cluster_name
: Optional. Eine Überschreibung für die oberste Definitionopenhpc_cluster_name
.extra_nodes
: Optional. Eine Liste zusätzlicher Knotendefinitionen, z.B. für Knoten in dieser Gruppe/Partition, die nicht von dieser Rolle verwaltet werden. Jedes Element sollte ein Dict sein, mit Schlüsseln/Werten gemäß der "NODE CONFIGURATION" Dokumentation für slurm.conf. Beachten Sie, dass der SchlüsselNodeName
zuerst kommen muss.ram_mb
: Optional. Der verfügbare physische RAM in jedem Knoten dieser Gruppe (slurm.conf ParameterRealMemory
) in MiB. Dies wird unter Verwendung von Ansible-Fakten gesetzt, wenn nicht definiert, entspricht esfree --mebi
total *openhpc_ram_multiplier
.ram_multiplier
: Optional. Eine Überschreibung der obersten Definitionopenhpc_ram_multiplier
. Hat keine Wirkung, wennram_mb
gesetzt ist.gres
: Optional. Liste von Dicts, die allgemeine Ressourcen definieren. Jeder Dict muss definieren:conf
: Ein String mit der Ressourcenspezifikation, der das Format<name>:<type>:<number>
erfordert, z.B.gpu:A100:2
. Beachten Sie, dass dertype
eine willkürliche Zeichenkette ist.file
: Ein String mit dem File (Pfad zu Gerät(en)) für diese Ressource, z.B./dev/nvidia[0-1]
für das obige Beispiel.
Beachten Sie, dass GresTypes in
openhpc_config
gesetzt werden müssen, wenn dies verwendet wird.
default
: Optional. Ein Boolean-Flag, ob diese Partition die Standardpartition ist. Zulässige Einstellungen sindYES
undNO
.maxtime
: Optional. Eine partition-spezifische Zeitbeschränkung, die dem Format des slurm.conf ParametersMaxTime
folgt. Der Standardwert wird durchopenhpc_job_maxtime
gegeben. Der Wert sollte in Anführungszeichen gesetzt werden, um Ansible-Konvertierungen zu vermeiden.partition_params
: Optional. Zuordnung zusätzlicher Parameter und Werte für die Partition-Konfiguration.
Für jede Gruppe (falls verwendet) oder Partition werden alle Knoten in einer Ansible-Inventargruppe <cluster_name>_<group_name>
zur Gruppe/Partition hinzugefügt. Beachten Sie:
- Knoten können beliebige Hostnamen haben, diese sollten jedoch klein geschrieben werden, um eine Übereinstimmung zwischen Inventar und tatsächlichem Hostnamen zu vermeiden.
- Knoten in einer Gruppe werden als homogen hinsichtlich Prozessor und Speicher angenommen.
- Eine Inventargruppe kann leer oder fehlen, aber wenn sie nicht fehlt, muss das Play mindestens einen Knoten von ihr enthalten (wird verwendet, um Informationen über den Prozessor festzulegen).
- Knoten dürfen nicht in mehr als einer Gruppe erscheinen.
openhpc_job_maxtime
: Maximale Jobzeitbeschränkung, Standard '60-0'
(60 Tage). Siehe slurm.conf Parameter MaxTime
für das Format. Der Standardwert beträgt 60 Tage. Der Wert sollte in Anführungszeichen gesetzt werden, um Ansible-Konvertierungen zu vermeiden.
openhpc_cluster_name
: Name des Clusters.
openhpc_config
: Optional. Zuordnung zusätzlicher Parameter und Werte für slurm.conf
. Beachten Sie, dass diese alle in templates/slurm.conf.j2
enthaltenen überschreiben werden.
openhpc_ram_multiplier
: Optional, Standard 0.95
. Multiplikator, der bei der Berechnung verwendet wird: total_memory * openhpc_ram_multiplier
, wenn RealMemory
für die Partition in slurm.conf festgelegt wird. Kann auf einer Partitionsebene mit openhpc_slurm_partitions.ram_multiplier
überschrieben werden. Hat keine Wirkung, wenn openhpc_slurm_partitions.ram_mb
gesetzt ist.
openhpc_state_save_location
: Optional. Absoluter Pfad für den Slurm-Controller-Zustand (slurm.conf
Parameter StateSaveLocation)
Abrechnung
Standardmäßig ist kein Abrechnungs-Speicher konfiguriert. OpenHPC v1.x und nicht aktualisierte OpenHPC v2.0-Cluster unterstützen dateibasierten Abrechnungsspeicher, der ausgewählt werden kann, indem die Rollenvariable openhpc_slurm_accounting_storage_type
auf accounting_storage/filetxt
1 gesetzt wird. Die Abrechnung für OpenHPC v2.1 und aktualisierte OpenHPC v2.0-Clustern erfordert den Slurm-Datenbankdaemon, slurmdbd
(obwohl die Abschluss eines Jobs eine eingeschränkte Alternative sein kann, siehe unten. Um die Abrechnung zu aktivieren:
- Konfigurieren Sie einen MariaDB- oder MySQL-Server wie in der Slurm-Abrechnungs Dokumentation auf einem der Knoten in Ihrem Inventar beschrieben und setzen Sie
openhpc_enable.database
auftrue
für diesen Knoten. - Setzen Sie
openhpc_slurm_accounting_storage_type
aufaccounting_storage/slurmdbd
. - Konfigurieren Sie die Variablen für
slurmdbd.conf
wie unten.
Die Rolle kümmert sich um die Konfiguration der folgenden Variablen für Sie:
openhpc_slurm_accounting_storage_host
: Wo der Abrechnungs-Speicherdienst läuft, d.h. wo slurmdbd läuft.
openhpc_slurm_accounting_storage_port
: Welchen Port verwenden, um sich mit dem Abrechnungs-Speicher zu verbinden.
openhpc_slurm_accounting_storage_user
: Benutzername zur Authentifizierung beim Abrechnungsspeicher.
openhpc_slurm_accounting_storage_pass
: Mungekey oder Datenbank-Passwort zur Authentifizierung.
Für fortgeschrittene Anpassungen oder um einen anderen Speichertyp zu konfigurieren, möchten Sie möglicherweise diese Werte manuell ändern.
Job-Abrechnung
Diese ist größtenteils redundant, wenn Sie das oben genannte Abrechnungs-Plugin verwenden, bietet jedoch grundlegende Abrechnungsdaten wie Start- und Endzeiten. Standardmäßig ist keine Job-Abrechnung konfiguriert.
openhpc_slurm_job_comp_type
: Protokollierungsmechanismus für die Job-Abrechnung. Kann einer von
jobcomp/filetxt
, jobcomp/none
, jobcomp/elasticsearch
sein.
openhpc_slurm_job_acct_gather_type
: Mechanismus zur Erfassung von Job-Abrechnungsdaten. Kann einer von jobacct_gather/linux
, jobacct_gather/cgroup
und jobacct_gather/none
sein.
openhpc_slurm_job_acct_gather_frequency
: Abtastintervall für die Job-Abrechnung (Sekunden).
openhpc_slurm_job_comp_loc
: Speicherort zum Speichern der Job-Abrechnungsunterlagen. Hängt vom Wert von openhpc_slurm_job_comp_type
ab, z.B. für jobcomp/filetxt
entspricht es einem Pfad auf der Festplatte.
slurmdbd.conf
Die folgenden Optionen betreffen slurmdbd.conf
. Bitte sehen Sie sich die Slurm Dokumentation für weitere Details an.
Sie müssen diese Variablen konfigurieren, wenn Sie openhpc_enable.database
auf true
gesetzt haben.
openhpc_slurmdbd_port
: Port, auf dem slurmdb hören soll, Standardwert ist 6819
.
openhpc_slurmdbd_mysql_host
: Hostname oder IP, wo MariaDB läuft, Standardwert ist openhpc_slurm_control_host
.
openhpc_slurmdbd_mysql_database
: Datenbank, die für die Abrechnung verwendet werden soll, Standardwert ist slurm_acct_db
.
openhpc_slurmdbd_mysql_password
: Passwort zur Authentifizierung bei der Datenbank. Diese Variable muss gesetzt werden.
openhpc_slurmdbd_mysql_username
: Benutzername zur Authentifizierung bei der Datenbank, Standardwert ist slurm
.
Beispiel-Inventar
Und ein Ansible-Inventar sieht so aus:
[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
Beispiel-Playbooks
Um zu installieren, erstellen Sie ein Playbook, das folgendermaßen aussieht:
---
- 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 hat accounting_storage/filetxt
als Option entfernt. Diese Version von Slurm wurde in OpenHPC v2.1 eingeführt, aber die OpenHPC-Repos sind für alle OpenHPC v2.x-Versionen gleich. ↩
This role provisions an exisiting cluster to support OpenHPC control and batch compute functions and installs necessary runtime packages.
ansible-galaxy install stackhpc.openhpc