idiv_biodiversity.lmod

Ansible ロール: Lmod

ソースから Lmod をインストールする Ansible ロールです。

このロールは HPC クラスタでの便利なインストールを念頭に置いて書かれています。 これは、実際の Lmod ソフトウェアをグローバルなネットワークファイルシステムに 1 台のホストにインストールできる一方、他の全てのホストには Lmod の依存関係や shell configuration ファイルをインストールすることができることを意味します。それでも、このロールを使って単一のサーバーに 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'

システムスパイダキャッシュの更新クロンジョブをインストールするかどうか:

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 を使って初めて見つけられるようになります。

HPC クラスタ用: これも単一のホストのみ必要で、lmod_install と同じ ルールに従います。詳細は を参照してください。

シェル設定

/etc/profile.d に書き込まれるシェル設定ファイルの名前:

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

これらを変更するのは、特定の順序で source する必要がある場合のみです。 たとえば、異なるスクリプトが module または ml 関数を必要とする場合、 それらは Lmod ファイルの source される必要があります。

段階的ロールアウト

このモジュールは 段階的ロールアウト(カナリアリリース)の方法を提供します。 これは、別の環境モジュールシステムから Lmod への移行時に重要かもしれません。

注意: カナリアリリースの一般的な情報については、こちらのブログ投稿を参照してください。この特定のためのLmodドキュメンテーションはここにあります。

lmod_canary: no

この変数には3つの可能な値があります:

  1. no:段階的ロールアウトを使用せず、全ユーザーがLmodを初期化
  2. 'opt-in'opt-in ファイルが存在する場合にのみ Lmod を初期化するカスタムスクリプトをインストール
  3. 'opt-in-skel'opt-in と同様ですが、/etc/skel にあるスケルトンを通じて新しいユーザーを自動的に opt-in にする
  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-yesopt-in を、touch ~/.lmod-noopt-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: さらに問題が発生しています。

依存関係

このロールは、RedHat ベースの配布物用にランタイムとビルド依存関係を インストールするために geerlingguy.repo-epel条件付きで依存しています。これらの依存関係はすべて デフォルトのリポジトリには含まれていません。

例示プレイブック

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: ヘッドサーバー
  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 年に Christian Krause によって作成され、GitHub の wookietreiberとして知られています。 彼は ドイツ統合生物多様性研究センター (iDiv) の HPC クラスタシステム管理者です。 Ubuntu Bionic サポートは Tom Schoonjans によって追加されました。 彼は ロザリンド・フランクリン研究所 の HPC とクラウドの研究ソフトウェアエンジニアです。

プロジェクトについて

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

インストール
ansible-galaxy install idiv_biodiversity.lmod
ライセンス
mit
ダウンロード
18.4k