lmod

Роль Ansible: Lmod

Эта роль Ansible устанавливает Lmod из исходного кода.

Роль разработана с учетом удобной установки на HPC кластерах. Это означает, что Lmod можно установить на общую сетевую файловую систему только на одном хосте, в то время как все остальные хосты устанавливают только зависимости Lmod и файлы конфигурации оболочки. Тем не менее, конечно, Lmod можно установить с помощью этой роли и на одном сервере.

Также с помощью этой роли можно постепенно переходить с другой модульной системы на Lmod.

Содержание

Требования

Переменные роли

Базовые переменные

lmod_version: '7.7.14'
lmod_install: no
lmod_prefix: '/opt/apps'
lmod_module_root_path: '{{ lmod_prefix }}/modulefiles'

Для HPC кластеров: Переменная lmod_install должна быть установлена в yes только для хоста, который фактически устанавливает Lmod в общую сетевую файловую систему, все остальные хосты будут устанавливать только зависимости. Это следует установить в host_vars, см. примеры.

Вы также можете указать пути к файлам модулей, которые будут использоваться вместо значения по умолчанию lmod_module_root_path:

lmod_module_paths:
  - '/software/modulefiles/compiler'
  - '/software/modulefiles/libraries'
  - '/software/modulefiles/tools'

Это может быть полезно, если у вас есть устаревшие модули.

Пакет сайта

Вы можете изменить SitePackage.lua:

lmod_site_package: путь/к/моим/шаблонам/SitePackage.lua

Кэш системного паука

Расположение файлов кэша системного паука:

lmod_spider_cache_dir: '{{ lmod_module_root_path }}/.spider-cache'
lmod_spider_cache_stamp_file: '{{ lmod_module_root_path }}/.spider-cache.stamp'

Устанавливать ли задачу cron для обновления кэша системного паука:

lmod_spider_cache_cron: no
lmod_spider_cache_cron_minute: '0'

Измените пути для включения при генерации кэша системного паука:

lmod_spider_cache_cron_modulepath:
  - '$MODULEPATH'

Примечание: Может быть полезно добавить сюда пути, отличные от значения по умолчанию MODULEPATH, особенно для сообществ в вашей системе, которые предоставляют свои собственные директории модулей. Если ваш путь по умолчанию /software/modules, который получают все, но у вас также есть /software/community/group-{a,b,c}/modules, которые могут быть включены по мере необходимости. Добавив эти пути в кэш системного паука, вы сможете включить эти модули прозрачно, т.е. вы сможете найти их только с помощью module spider, если добавили эту директорию модуля в ваш MODULEPATH.

Для HPC кластеров: Это также нужно только на одном хосте, следуя тем же правилам, что и lmod_install, см. примеры.

Конфигурация оболочки

Имена файлов конфигурации оболочки, которые будут записаны в /etc/profile.d:

lmod_init_bash_file: 'z00-lmod.sh'
lmod_init_csh_file: 'z00-lmod.csh'

Изменение этих имен требуется только в том случае, если их необходимо source'дить в определенном порядке, например, если другой скрипт требует функций module или ml, их нужно source'дить после файлов Lmod.

Постепенный переход

Этот модуль предоставляет способ постепенного перехода, также известного как выход с канарейкой. Это может быть важно, если вы мигрируете с другой системы модулей окружения на Lmod.

Примечание: Для получения дополнительной информации о канарейках в целом см. этот блог. Документация Lmod, на которой основан этот конкретный постепенный переход, доступна здесь.

lmod_canary: no

Эта переменная может принимать три значения:

  1. no: не использовать постепенный переход, каждый пользователь инициализирует Lmod.
  2. 'opt-in': устанавливает пользовательские скрипты, которые инициализируют Lmod только если существует файл opt-in.
  3. 'opt-in-skel': то же, что и opt-in, плюс автоматическая установка для новых пользователей через skeletal в /etc/skel.
  4. 'opt-out': устанавливает пользовательские скрипты, которые не инициализируют Lmod, если существует файл opt-out.

Примечание: Вы можете переключаться с opt-in на opt-in-skel, с обоих вариантов opt-in на opt-out и с opt-out на no, задачи, предоставляемые этой ролью, будут обрабатывать эти переходы автоматически.

Вот имена файлов для opt-in и opt-out, которые ищутся в домашнем каталоге пользователей:

lmod_canary_opt_in_file: '.lmod-yes'
lmod_canary_opt_out_file: '.lmod-no'

Примечание: Если вы используете постепенный переход, вам просто нужно сообщить вашим пользователям, что им нужно выполнить touch ~/.lmod-yes для opt-in, touch ~/.lmod-no для opt-out и удалить эти файлы, если они хотят вернуться к соответствующему поведению по умолчанию.

Административные сообщения

При желании вы можете определить административные сообщения для модулей, которые будут отображаться при их загрузке:

lmod_admin_messages:

  - pattern: gcc/2%.95
    message: >-
      Этот модуль устарел и будет удален из системы 1 января 1999 года. Пожалуйста, переходите на более новый компилятор.

  - pattern: /opt/apps/modulefiles/Compiler/gcc/4.7.2/boost/1.55.0
    message: У нас проблемы.

  - pattern: boost/1%.[5-7].*
    message: У нас больше проблем.

Зависимости

Эта роль условно зависит от geerlingguy.repo-epel для дистрибутивов на основе RedHat для установки зависимостей времени выполнения и сборки. Не все эти зависимости включены в стандартные репозитории.

Пример плейбука

Добавьте в requirements.yml:

---

# необязательный
# - src: geerlingguy.repo-epel

- src: idiv-biodiversity.lmod

...

Скачайте:

$ ansible-galaxy install -r requirements.yml

Для HPC кластеров: Как объяснялось выше, некоторые переменные нужно установить только на главном/головном хосте (как вы его называете). Вам следует установить их в соответствующем файле host_vars, например, host_vars/head.yml:

---

lmod_install: yes
lmod_spider_cache_cron: yes

...

Главный плейбук

Напишите главный плейбук:

---

- name: head server
  hosts: head
  roles:
    - role: idiv-biodiversity.lmod
      tags:
        - lmod
        - modules
  vars:
    lmod_prefix: '/software'
    lmod_install: yes
    lmod_canary: 'opt-in'

...

Зависимость от роли

Определите зависимость роли в meta/main.yml:

---

dependencies:

  - role: idiv-biodiversity.lmod
    vars:
      lmod_prefix: '/software'
      lmod_canary: 'opt-in'
    tags:
      - lmod
      - modules

...

Лицензия

MIT

Информация об авторе

Эта роль была создана в 2017 году Кристианом Краузе, также известным как wookietreiber на GitHub, администратором систем HPC-кластеров в Немецком центре интегративных исследований биоразнообразия (iDiv). Поддержка Ubuntu Bionic была добавлена Томом Шуньянсом, исследовательским инженером-программистом для HPC и облака в Институте Розалинды Франклин.

О проекте

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

Установить
ansible-galaxy install idiv-biodiversity/ansible-role-lmod
Лицензия
mit
Загрузки
17816