stackhpc.openhpc
stackhpc.openhpc
このAnsibleロールは、OpenHPC v2.x Slurmクラスタを提供するために、パッケージのインストールと設定を行います。
このロールはプレイブックから使用する必要があります。以下にシンプルな例を示します。このアプローチにより、利用可能なネットワークやクラスタの特性についての前提なしに、完全にモジュール化されています。任意のクラスタファイルシステムや必要な機能は、追加のAnsibleロールや他のアプローチを使用して自由に統合できます。
ノードの最小イメージは、RockyLinux 8 GenericCloudイメージです。
ロール変数
openhpc_extra_repos
: オプションリスト。Yumリポジトリの追加定義を設定します。Ansibleのyum_repositoryモジュールの形式に従います。各リスト要素の尊重されるキー:
name
: 必須description
: オプションfile
: 必須baseurl
: オプションmetalink
: オプションmirrorlist
: オプションgpgcheck
: オプションgpgkey
: オプション
openhpc_slurm_service_enabled
: ブール値。適切なslurmサービス(slurmd/slurmctld)を有効にするかどうか。
openhpc_slurm_service_started
: オプションのブール値。slurmサービスを開始するかどうか。falseに設定した場合、すべてのサービスが停止します。デフォルトはopenhpc_slurm_service_enabled
です。
openhpc_slurm_control_host
: 必須の文字列。コントローラーのAnsibleインベントリホスト名(および短いホスト名)、例: "{{ groups['cluster_control'] | first }}"
。
openhpc_slurm_control_host_address
: オプションの文字列。openhpc_slurm_control_host
で使用するIPアドレスまたは名前。例: openhpc_slurm_control_host
から解決されるインターフェースとは異なるインターフェースを使用する場合。
openhpc_packages
: インストールする追加のOpenHPCパッケージ。
openhpc_enable
:
control
: コントロールホストを有効にするかどうかdatabase
: slurmdbdを有効にするかどうかbatch
: 計算ノードを有効にするかどうかruntime
: OpenHPCランタイムを有効にするかどうか
openhpc_slurmdbd_host
: オプション。このロールを使用してslurmdbdをデプロイする場合はslurmdbdをデプロイする場所、それ以外の場合は既存のslurmdbdが稼働している場所。この値はインベントリ内のホストの名前にする必要があります。ロールがslurmdbdを管理しないようにするには、none
に設定します。デフォルトはopenhpc_slurm_control_host
です。
openhpc_slurm_configless
: オプション、デフォルトはfalse。trueの場合、slurmの"configless"モードが使用されます。
openhpc_munge_key
: オプション。使用するmungeキーを定義します。提供しない場合は生成されますが、openhpc_slurm_control_host
がプレイに含まれている必要があります。
openhpc_login_only_nodes
: オプション。"configless"モードを使用している場合は、ログインのみのノードを含むansibleグループの名前を指定します(すなわち、コントロールノードでもないノード)。これらのノードは、設定のためにコントロールノードに連絡するためにslurmd
を実行します。
openhpc_module_system_install
: オプション、デフォルトはtrue。環境モジュールシステムをインストールするかどうか。trueの場合、lmodがインストールされます。falseの場合は、独自のモジュールシステムを提供するか、モジュールシステムなしで進むことができます。
slurm.conf
openhpc_slurm_partitions
: オプション。1つ以上のslurmパーティションのリスト、デフォルトは[]
。各パーティションは次の値を含むことができます:
groups
: パーティションを構成する複数のノードグループがある場合は、ここにグループオブジェクトのリストを定義できます。それ以外の場合、groups
を省略し、次の属性をパーティションオブジェクトに定義できます:name
: このグループ内のノードの名前。cluster_name
: オプション。最上位定義openhpc_cluster_name
の上書き。extra_nodes
: オプション。このグループ/パーティションによって制御されていないノードの追加定義のリスト。各アイテムは辞書で、"NODE CONFIGURATION"のスラーム.confドキュメントに従ったキー/値を持つ必要があります。キーNodeName
は最初である必要があります。ram_mb
: オプション。このグループの各ノードで利用可能な物理RAM(slurm.confパラメータRealMemory
)をMiB単位で示します。定義されていない場合はansibleファクトを使用して設定され、free --mebi
の合計 *openhpc_ram_multiplier
に相当します。ram_multiplier
: オプション。最上位定義openhpc_ram_multiplier
の上書き。ram_mb
が設定されている場合は効果がありません。gres
: オプション。ジェネリックリソースを定義する辞書のリスト。各辞書は次を定義する必要があります:conf
: リソース仕様を含む文字列ですが、形式は<name>:<type>:<number>
が必要です。例:gpu:A100:2
。type
は任意の文字列です。file
: このリソースのファイル(デバイスへのパス)。例えば、上記の例の場合は/dev/nvidia[0-1]
です。
これは使用される場合、GresTypesが
openhpc_config
に設定されている必要があります。
default
: オプション。このパーティションがデフォルトであるかどうかのブールフラグ。有効な設定はYES
とNO
。maxtime
: オプション。 slurm.confパラメータMaxTime
の形式に従ったパーティション固有の時間制限。デフォルト値はopenhpc_job_maxtime
によって与えられます。この値はAnsibleの変換を避けるために引用されるべきです。partition_params
: オプション。 パーティション設定のための追加パラメータと値のマッピング。
グループ(使用される場合)またはパーティションに対して、Ansibleインベントリグループ<cluster_name>_<group_name>
内のノードがグループ/パーティションに追加されます。以下に注意してください:
- ノードは任意のホスト名を持つことができますが、これらは小文字にする必要があります。そうしないとインベントリと実際のホスト名の不一致が起こります。
- グループ内のノードは、プロセッサーとメモリの観点から均質であると仮定されます。
- インベントリグループは空または欠落している可能性がありますが、そうでない場合、そのプレイには少なくとも1つのノードが必要です(プロセッサ情報を設定するために使用されます)。
- ノードは1つのグループにしか存在しないことができません。
openhpc_job_maxtime
: 最大ジョブ時間制限、デフォルトは'60-0'
(60日)。フォーマットについてはslurm.confのパラメータMaxTime
を参照してください。デフォルトは60日です。この値はAnsibleの変換を避けるために引用されるべきです。
openhpc_cluster_name
: クラスタの名前。
openhpc_config
: オプション。slurm.conf
のための追加パラメータと値のマッピング。これらはtemplates/slurm.conf.j2
に含まれるものを上書きします。
openhpc_ram_multiplier
: オプション、デフォルトは0.95
。slurm.conf
でのパーティションのRealMemory
を設定する際に使用される計算の乗数:total_memory * openhpc_ram_multiplier
。openhpc_slurm_partitions.ram_multiplier
を使用してパーティションごとに上書きできます。openhpc_slurm_partitions.ram_mb
が設定されている場合は効果がありません。
openhpc_state_save_location
: オプション。Slurmコントローラーの状態の絶対パス(slurm.conf
のパラメータStateSaveLocation )
会計
デフォルトでは、会計ストレージは設定されていません。OpenHPC v1.xおよび更新されていないOpenHPC v2.0クラスタはファイルベースの会計ストレージをサポートしています。これは、ロール変数openhpc_slurm_accounting_storage_type
をaccounting_storage/filetxt
に設定することで選択できます。OpenHPC v2.1および更新されたOpenHPC v2.0クラスタの会計にはSlurmデータベースデーモンslurmdbd
が必要です(ただし、ジョブの完了が限られた代替手段となる可能性があります。会計を有効にするには:
- インベントリ内のノードの1つで、slurm会計ドキュメントに記載されたとおりにmariadbまたはmysqlサーバーを設定し、このノードのために
openhpc_enable.database
をtrue
に設定します。 openhpc_slurm_accounting_storage_type
をaccounting_storage/slurmdbd
に設定します。- 以下の
slurmdbd.conf
用の変数を設定します。
このロールは、次の変数を設定することを自動で行います:
openhpc_slurm_accounting_storage_host
: 会計ストレージサービスが実行されている場所、すなわちslurmdbdが実行されている場所。
openhpc_slurm_accounting_storage_port
: 会計ストレージに接続するために使用するポート。
openhpc_slurm_accounting_storage_user
: 会計ストレージと認証するためのユーザー名。
openhpc_slurm_accounting_storage_pass
: 認証に使用するMungeキーまたはデータベースのパスワード。
より高度なカスタマイズや別のストレージタイプを設定するには、これらの値を手動で変更することができます。
ジョブ会計
これは上記の会計プラグインを使用している場合は大部分が冗長ですが、開始時間と終了時間などの基本的な会計データを提供します。デフォルトでは、ジョブ会計は設定されていません。
openhpc_slurm_job_comp_type
: ジョブ会計のためのロギングメカニズム。次のいずれかになります:
jobcomp/filetxt
、jobcomp/none
、jobcomp/elasticsearch
。
openhpc_slurm_job_acct_gather_type
: ジョブ会計データを収集するためのメカニズム。次のいずれかになります:
jobacct_gather/linux
、jobacct_gather/cgroup
、jobacct_gather/none
。
openhpc_slurm_job_acct_gather_frequency
: ジョブ会計のサンプリング期間(秒)。
openhpc_slurm_job_comp_loc
: ジョブ会計記録を保存する場所。openhpc_slurm_job_comp_type
の値に依存します。例えば、jobcomp/filetxt
の場合はディスク上のパスを表します。
slurmdbd.conf
以下のオプションは、slurmdbd.conf
に影響します。詳細については、slurmのドキュメントを参照してください。
openhpc_enable.database
をtrue
に設定した場合、これらの変数を設定する必要があります。
openhpc_slurmdbd_port
: slurmdbがリッスンするポート、デフォルトは6819
です。
openhpc_slurmdbd_mysql_host
: mariadbが実行されているホスト名またはIP、デフォルトはopenhpc_slurm_control_host
です。
openhpc_slurmdbd_mysql_database
: 会計に使用するデータベース、デフォルトはslurm_acct_db
です。
openhpc_slurmdbd_mysql_password
: データベース認証用のパスワード。この変数は設定する必要があります。
openhpc_slurmdbd_mysql_username
: データベース認証用のユーザー名、デフォルトはslurm
です。
インベントリの例
以下のようなAnsibleインベントリ:
[openhpc_login]
openhpc-login-0 ansible_host=10.60.253.40 ansible_user=centos
[openhpc_compute]
openhpc-compute-0 ansible_host=10.60.253.31 ansible_user=centos
openhpc-compute-1 ansible_host=10.60.253.32 ansible_user=centos
[cluster_login:children]
openhpc_login
[cluster_control:children]
openhpc_login
[cluster_batch:children]
openhpc_compute
プレイブックの例
デプロイするには、以下のようなプレイブックを作成します:
---
- hosts:
- cluster_login
- cluster_control
- cluster_batch
become: yes
roles:
- role: openhpc
openhpc_enable:
control: "{{ inventory_hostname in groups['cluster_control'] }}"
batch: "{{ inventory_hostname in groups['cluster_batch'] }}"
runtime: true
openhpc_slurm_service_enabled: true
openhpc_slurm_control_host: "{{ groups['cluster_control'] | first }}"
openhpc_slurm_partitions:
- name: "compute"
openhpc_cluster_name: openhpc
openhpc_packages: []
...
1 Slurm 20.11ではオプションとしてaccounting_storage/filetxt
が削除されました。このSlurmのバージョンはOpenHPC v2.1で導入されましたが、OpenHPCリポジトリはすべてのOpenHPC v2.xリリースに共通です。↩
This role provisions an exisiting cluster to support OpenHPC control and batch compute functions and installs necessary runtime packages.
ansible-galaxy install stackhpc.openhpc