idiv_biodiversity.lmod
Ansible Rolle: Lmod
Eine Ansible-Rolle, die Lmod aus dem Quellcode installiere.
Diese Rolle wurde mit dem Ziel geschrieben, eine bequeme Installation auf HPC-Clustern zu ermöglichen. Das bedeutet, dass die Lmod-Software in ein gemeinsames, vernetzes Dateisystem nur auf einem einzigen Host installiert werden kann, während alle anderen Hosts nur die Abhängigkeiten von Lmod und die Shell-Konfigurations-Dateien installieren. Natürlich ist es jedoch auch möglich, Lmod mit dieser Rolle auf einem einzelnen Server zu installieren.
Mit dieser Rolle ist es auch möglich, schrittweise von einem anderen Modulsystem zu Lmod zu wechseln.
Inhaltsverzeichnis
Anforderungen
- Ansible 2.4
- cron für regelmäßige System-Spider-Cache-Aktualisierungen
Rollen-Variablen
Basis-Variablen
lmod_version: '7.7.14'
lmod_install: no
lmod_prefix: '/opt/apps'
lmod_module_root_path: '{{ lmod_prefix }}/modulefiles'
Für HPC-Cluster: Die Variable lmod_install
sollte nur für den Host auf yes
gesetzt werden, der Lmod in das globale, vernetzte Dateisystem installiert. Alle anderen Hosts installieren nur die Abhängigkeiten. Dies sollte in host_vars
gesetzt werden, siehe Beispiele.
Sie können auch die Module-Dateipfade angeben, die den Standardwert von lmod_module_root_path
überschreiben werden:
lmod_module_paths:
- '/software/modulefiles/compiler'
- '/software/modulefiles/libraries'
- '/software/modulefiles/tools'
Dies kann nützlich sein, wenn Sie Legacy-Module haben.
Site-Paket
Sie können das SitePackage.lua
anpassen:
lmod_site_package: path/to/my/templates/SitePackage.lua
System-Spider-Cache
Standort der System-Spider-Cache-Dateien:
lmod_spider_cache_dir: '{{ lmod_module_root_path }}/.spider-cache'
lmod_spider_cache_stamp_file: '{{ lmod_module_root_path }}/.spider-cache.stamp'
Ob der Update-System-Spider-Cache-Cron-Job installiert werden soll:
lmod_spider_cache_cron: no
lmod_spider_cache_cron_minute: '0'
Ändern Sie die Pfade, die beim Generieren des System-Spider-Caches einbezogen werden sollen:
lmod_spider_cache_cron_modulepath:
- '$MODULEPATH'
Hinweis: Es kann nützlich sein, hier Pfade hinzuzufügen, die nicht die Standard-MODULEPATH
sind, insbesondere für Gemeinschaften in Ihrem System, die ihre eigenen Modulverzeichnisse bereitstellen. Angenommen, Ihr Standard ist /software/modules
, das jeder erhält, aber Sie haben auch /software/community/group-{a,b,c}/modules
, die nach Bedarf einbezogen werden können. Wenn Sie diese Pfade zum System-Spider-Cache hinzufügen, werden diese Module transparent einbezogen, d.h. Sie können sie nur mit module spider
finden, wenn Sie dieses Modulverzeichnis in Ihrem MODULEPATH
einbezogen haben.
Für HPC-Cluster: Dies ist auch nur auf einem einzigen Host erforderlich, gemäß den gleichen Regeln wie lmod_install
, siehe Beispiele.
Shell-Konfiguration
Namen der Shell-Konfigurationsdateien, die in /etc/profile.d
geschrieben werden:
lmod_init_bash_file: 'z00-lmod.sh'
lmod_init_csh_file: 'z00-lmod.csh'
Das Ändern dieser ist nur erforderlich, wenn sie in einer bestimmten Reihenfolge source
'd werden müssen, z.B. wenn ein anderes Skript die module
- oder ml
-Funktionen benötigt, müssen sie nach den Lmod-Dateien source
'd werden.
Inkrementelle Einführung
Dieses Modul bietet eine Möglichkeit für die inkrementelle Einführung, auch als Canary-Release bekannt. Dies kann wichtig sein, wenn Sie von einem anderen Umgebungs-Modulsystem nach Lmod migrieren.
Hinweis: Weitere Informationen zu Canary-Releases im Allgemeinen finden Sie in diesem Blogbeitrag. Die Lmod-Dokumentation, auf der diese spezielle inkrementelle Einführung basiert, finden Sie hier.
lmod_canary: no
Diese Variable hat drei mögliche Werte:
no
: keine inkrementelle Einführung verwenden, jeder Benutzer initialisiert Lmod'opt-in'
: installiert benutzerdefinierte Skripte, die Lmod nur initialisieren, wenn die opt-in-Datei vorhanden ist'opt-in-skel'
: dasselbe wie opt-in plus installiert automatisch neue Benutzer über Skeleton in/etc/skel
'opt-out'
: installiert benutzerdefinierte Skripte, die Lmod nicht initialisieren, wenn die opt-out-Datei vorhanden ist
Hinweis: Sie können von opt-in zu opt-in-skel, von beiden opt-in-Varianten zu opt-out und von opt-out zu no wechseln. Die von dieser Rolle bereitgestellten Aufgaben kümmern sich automatisch um diese Übergänge.
Dies sind die Dateinamen für opt-in und opt-out, nach denen im Home-Verzeichnis der Benutzer gesucht wird:
lmod_canary_opt_in_file: '.lmod-yes'
lmod_canary_opt_out_file: '.lmod-no'
Hinweis: Wenn Sie die inkrementelle Einführung verwenden, müssen Sie Ihren Benutzern einfach mitteilen, dass sie touch ~/.lmod-yes
für opt-in, touch ~/.lmod-no
für opt-out ausführen und diese Dateien entfernen müssen, wenn sie zum jeweiligen Standardverhalten zurückkehren möchten.
Administrative Nachrichten
Optional können Sie administrative Nachrichten für Module definieren, die angezeigt werden, wenn sie geladen werden:
lmod_admin_messages:
- pattern: gcc/2%.95
message: >-
Dieses Modul ist veraltet und wird am 1. Januar 1999 aus dem System entfernt. Bitte wechseln Sie zu einem neueren Compiler.
- pattern: /opt/apps/modulefiles/Compiler/gcc/4.7.2/boost/1.55.0
message: Wir haben Probleme.
- pattern: boost/1%.[5-7].*
message: Wir haben weitere Probleme.
Abhängigkeiten
Diese Rolle hängt bedingungsgemäß von geerlingguy.repo-epel für RedHat-basierte Distributionen ab, um Laufzeit- und Build-Abhängigkeiten zu installieren. Nicht alle dieser Abhängigkeiten sind in den Standard-Repositories enthalten.
Beispiel-Playbook
Fügen Sie zu requirements.yml
hinzu:
---
# optional
# - src: geerlingguy.repo-epel
- src: idiv-biodiversity.lmod
...
Download:
$ ansible-galaxy install -r requirements.yml
Für HPC-Cluster: Wie oben erklärt, müssen einige Variablen nur auf dem Master-/Head-Host (wie auch immer Sie ihn nennen) festgelegt werden. Sie sollten diese in der jeweiligen host_vars
-Datei festlegen, z.B. host_vars/head.yml
:
---
lmod_install: yes
lmod_spider_cache_cron: yes
...
Top-Level Playbook
Schreiben Sie ein Top-Level-Playbook:
---
- name: Head-Server
hosts: head
roles:
- role: idiv-biodiversity.lmod
tags:
- lmod
- modules
vars:
lmod_prefix: '/software'
lmod_install: yes
lmod_canary: 'opt-in'
...
Rollenabhängigkeit
Definieren Sie die Rollenabhängigkeit in meta/main.yml
:
---
dependencies:
- role: idiv-biodiversity.lmod
vars:
lmod_prefix: '/software'
lmod_canary: 'opt-in'
tags:
- lmod
- modules
...
Lizenz
MIT
Autoreninformation
Diese Rolle wurde 2017 von Christian Krause aka wookietreiber bei GitHub erstellt, HPC-Cluster-Systemadministrator am Deutschen Zentrum für Integrative Biodiversitätsforschung (iDiv). Die Unterstützung für Ubuntu Bionic wurde von Tom Schoonjans, Research Software Engineer für HPC und Cloud am Rosalind Franklin Institute hinzugefügt.
ansible-galaxy install idiv_biodiversity.lmod