marvel-nccr.slurm
Ansible Role: marvel-nccr.slurm
このAnsibleロールは、Ubuntuにslurmワークロードマネージャーをインストールします(16.04、18.04、20.04でテスト済み)。
注意: このロールは、slurmが動作しているマシンを計算ノードとしても設定します(そのため、例えばマシンの#CPUsに関する自動検出機能が含まれています)。 現在のところ、このロールは複数のノードを持つ計算クラスターを設定するためには設計されていません。そのためのツールについては、例えばelasticlusterなどを参照してください。
このロールは次のことを行います:
- slurmパッケージをインストールします
- slurmの設定ファイル (
/etc/slurm-llnl/slurm.conf
) を動的に正しいプラットフォームリソース(ホスト名、#CPUなど)を使用するように設定します。1つのノード($HOSTNAME
という名前)と1つのパーティション(slurm_partition_name
という名前)を構成します。 slurm-resources
スクリプトとスタートアップサービスを追加し、正しいプラットフォームリソースの初期化を自動化します(インスタンスが異なるリソースを持つ可能性があるVMイメージを作成する際に必要です)- slurmサービスを開始します。
サービスが稼働しているか確認するには(systemdを使用している場合):
$ systemctl --type=service
...
slurmctld.service loaded active running Slurmコントローラーデーモン
slurmd.service loaded active running Slurmノードデーモン
...
slurmノード/パーティションを確認するには:
$ scontrol show node
$ scontrol show partition
これがlscpu
で指定されたリソースと一致するはずです。
slurm-resources
スタートアップサービスを有効/無効にするには:
$ systemctl enable slurm-resources
slurmのリソース設定を直接変更したい場合は、例えば以下のようにできます:
$ slurm-resources -e restart_on_change=true -e slurm_max_cpus=2
これによりノードに定義されたリソースが更新され、パーティションの最大CPUが2に設定され(ノード上のCPUに関係なく)、設定に変更があればslurmサービスが再起動されます。
インストール
ansible-galaxy install marvel-nccr.slurm
ロール変数
defaults/main.yml
を参照してください。
例のプレイブック
- hosts: servers
roles:
- role: marvel-nccr.slurm
開発とテスト
このロールは、テストのためにMoleculeとDockerを使用しています。
Dockerをインストールした後:
marvel-nccr.slurm
という名前のパッケージにリポジトリをクローンします(フォルダ名はAnsible Galaxy名と同じである必要があります)
git clone https://github.com/marvel-nccr/ansible-role-slurm marvel-nccr.slurm
cd marvel-nccr.slurm
次に実行:
pip install -r requirements.txt # moleculeをインストール
molecule test # テストを実行
またはtoxを使用する(tox.ini
を参照):
pip install tox
tox
コードスタイル
コードスタイルはpre-commitでフォーマットされ、リントされます。
pip install pre-commit
pre-commit run --all
デプロイ
Ansible GalaxyへのデプロイはGitHub Actionsを介して自動化されています。
リリースvX.Y.Z
にタグを付けることでCIとリリースワークフローが開始されます。
CIテストが成功した場合にのみリリースが完了します。
ライセンス
MIT
お問い合わせ
Quantum Mobileおよび関連するansibleロールに関するお問い合わせは、AiiDAメーリングリストまでご連絡ください。
An Ansible role that installs the [slurm](https://slurm.schedmd.com/) workload manager on Ubuntu.
ansible-galaxy install marvel-nccr.slurm