lmod
Роль Ansible: Lmod
Эта роль Ansible устанавливает Lmod из исходного кода.
Роль разработана с учетом удобной установки на HPC кластерах. Это означает, что Lmod можно установить на общую сетевую файловую систему только на одном хосте, в то время как все остальные хосты устанавливают только зависимости Lmod и файлы конфигурации оболочки. Тем не менее, конечно, Lmod можно установить с помощью этой роли и на одном сервере.
Также с помощью этой роли можно постепенно переходить с другой модульной системы на Lmod.
Содержание
Требования
- Ansible 2.4
- cron для регулярного обновления кэша системного паука
Переменные роли
Базовые переменные
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
Эта переменная может принимать три значения:
no
: не использовать постепенный переход, каждый пользователь инициализирует Lmod.'opt-in'
: устанавливает пользовательские скрипты, которые инициализируют Lmod только если существует файл opt-in.'opt-in-skel'
: то же, что и opt-in, плюс автоматическая установка для новых пользователей через skeletal в/etc/skel
.'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 и облака в Институте Розалинды Франклин.
ansible-galaxy install idiv-biodiversity/ansible-role-lmod