idiv_biodiversity.lmod
Ansible 角色:Lmod
这是一个从源代码安装 Lmod 的 Ansible 角色。
该角色旨在方便在 HPC 集群上进行安装。 这意味着可以只在单个主机上将实际的 Lmod 软件安装到 一个全球网络共享文件系统中,而所有其他主机只需安装 Lmod 的依赖项和 shell 配置 文件。当然,您也可以在单台服务器上使用此角色安装 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
应仅在实际将 Lmod 安装到全球网络文件系统的主机上设置为 yes
,所有其他主机仅安装依赖项。此设置应在 host_vars
中进行,请查看 示例。
您还可以指定要取代默认的 lmod_module_root_path
的模块文件路径:
lmod_module_paths:
- '/software/modulefiles/compiler'
- '/software/modulefiles/libraries'
- '/software/modulefiles/tools'
如果您有遗留模块,这可能会很有用。
站点包
您可以修改 SitePackage.lua
:
lmod_site_package: path/to/my/templates/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
,可以按需包含。通过将这些路径添加到系统蜘蛛缓存,它将透明地包含这些模块,即只有当您在 MODULEPATH
中包含该模块目录时,您才能通过 module spider
查找它们。
对于 HPC 集群: 这也只需要在单个主机上,遵循与 lmod_install
相同的规则,请看 示例。
Shell 配置
将写入 /etc/profile.d
的 shell 配置文件名称:
lmod_init_bash_file: 'z00-lmod.sh'
lmod_init_csh_file: 'z00-lmod.csh'
只有在需要按特定顺序 source
时,才需要更改这些文件名,例如,如果另一个脚本需要 module
或 ml
函数,则需要在 Lmod 文件之后 source
它们。
逐步推广
此模块提供了一种 逐步推广 的方式,也称为 金丝雀发布。 如果您正在迁移到 Lmod,可能这很重要。
注意: 有关金丝雀发布的更多信息,请参见 这篇博文。与此特定逐步推广相关的 Lmod 文档可在 此处 找到。
lmod_canary: no
此变量有三种可能值:
no
: 不使用逐步推广,每个用户将初始化 Lmod'opt-in'
: 安装自定义脚本仅在 opt-in 文件存在时初始化 Lmod'opt-in-skel'
: 与 opt-in 相同,此外还通过 skel 自动安装新用户'opt-out'
: 安装自定义脚本,仅在 opt-out 文件存在时不初始化 Lmod
注意: 您可以从 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: >-
此模块已弃用,将于 1999 年 1 月 1 日从系统中移除。请切换到更新的编译器。
- 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
作者信息
该角色由 Christian Krause 于 2017 年创建,他在 德国综合生物多样性研究中心 (iDiv) 担任 HPC 集群系统管理员。Ubuntu Bionic 的支持由 Tom Schoonjans 添加,他是 Rosalind Franklin Institute 的 HPC 和云研究软件工程师。