idiv_biodiversity.lmod

Ansible 角色:Lmod

这是一个从源代码安装 Lmod 的 Ansible 角色。

该角色旨在方便在 HPC 集群上进行安装。 这意味着可以只在单个主机上将实际的 Lmod 软件安装到 一个全球网络共享文件系统中,而所有其他主机只需安装 Lmod 的依赖项和 shell 配置 文件。当然,您也可以在单台服务器上使用此角色安装 Lmod。

使用此角色,还可以逐步 从其他模块系统过渡 到 Lmod。

目录

要求

角色变量

基本变量

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 时,才需要更改这些文件名,例如,如果另一个脚本需要 moduleml 函数,则需要在 Lmod 文件之后 source 它们。

逐步推广

此模块提供了一种 逐步推广 的方式,也称为 金丝雀发布。 如果您正在迁移到 Lmod,可能这很重要。

注意: 有关金丝雀发布的更多信息,请参见 这篇博文。与此特定逐步推广相关的 Lmod 文档可在 此处 找到。

lmod_canary: no

此变量有三种可能值:

  1. no: 不使用逐步推广,每个用户将初始化 Lmod
  2. 'opt-in': 安装自定义脚本仅在 opt-in 文件存在时初始化 Lmod
  3. 'opt-in-skel': 与 opt-in 相同,此外还通过 skel 自动安装新用户
  4. 'opt-out': 安装自定义脚本,仅在 opt-out 文件存在时不初始化 Lmod

注意: 您可以从 opt-in 切换到 opt-in-skel,从两个 opt-in 变量切换到 opt-out,以及从 opt-out 切换到 no,此角色提供的任务将自动处理这些转换。

以下是用户主目录中查找的 opt-inopt-out 文件名称:

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

注意: 如果您使用逐步推广,您只需让用户知道他们需要 touch ~/.lmod-yes 表示 opt-intouch ~/.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 和云研究软件工程师。

关于项目

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

安装
ansible-galaxy install idiv_biodiversity.lmod
许可证
mit
下载
18.4k