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

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:

  1. no: keine inkrementelle Einführung verwenden, jeder Benutzer initialisiert Lmod
  2. 'opt-in': installiert benutzerdefinierte Skripte, die Lmod nur initialisieren, wenn die opt-in-Datei vorhanden ist
  3. 'opt-in-skel': dasselbe wie opt-in plus installiert automatisch neue Benutzer über Skeleton in /etc/skel
  4. '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.

Über das Projekt

install and set up "Lmod: A New Environment Module System"

Installieren
ansible-galaxy install idiv_biodiversity.lmod
Lizenz
mit
Downloads
18.4k