idiv_biodiversity.lmod
Ansible ロール: Lmod
ソースから Lmod をインストールする Ansible ロールです。
このロールは HPC クラスタでの便利なインストールを念頭に置いて書かれています。 これは、実際の Lmod ソフトウェアをグローバルなネットワークファイルシステムに 1 台のホストにインストールできる一方、他の全てのホストには Lmod の依存関係や shell configuration ファイルをインストールすることができることを意味します。それでも、このロールを使って単一のサーバーに 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'
システムスパイダキャッシュの更新クロンジョブをインストールするかどうか:
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つの可能な値があります:
no
:段階的ロールアウトを使用せず、全ユーザーがLmodを初期化'opt-in'
:opt-in ファイルが存在する場合にのみ Lmod を初期化するカスタムスクリプトをインストール'opt-in-skel'
:opt-in と同様ですが、/etc/skel
にあるスケルトンを通じて新しいユーザーを自動的に opt-in にする'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: さらに問題が発生しています。
依存関係
このロールは、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 とクラウドの研究ソフトウェアエンジニアです。