mila.infiniband
InfiniBand
この役割は、InfiniBandインターフェースのインストールと設定を行います。
役割の変数
インストール
APTまたはYUM/DNFリポジトリを定義し、GPGキーへのパスを指定します。
# デフォルトのaptリポジトリ
infiniband_apt_repository: 'deb https://linux.mellanox.com/public/repo/mlnx_ofed/latest/ubuntu18.04/amd64/ ./'
# デフォルトのyum/dnfリポジトリ
infiniband_yum_repository: 'https://linux.mellanox.com/public/repo/mlnx_ofed/latest/rhel8.3/$basearch/'
# MellanoxのGPGキー
infiniband_gpg_key: 'http://www.mellanox.com/downloads/ofed/RPM-GPG-KEY-Mellanox'
パッケージを最新のバージョンにアップグレードするためには:
infiniband_upgrade: True
リポジトリの優先度を設定します(APTのみ)。
infiniband_apt_priority: 490
カーネルヘッダーのパッケージ名は、ディストリビューションによって異なる場合があります。これは次のように定義できます:
infiniband_kernel_headers_package: 'linux-headers'
NVIDIA DGXのような一部のアプライアンスは、自分用のソフトウェアスタックを運営しています。アプライアンスがすでにMellanox OFEDドライバーのインストールを管理している場合、追加のリポジトリを設定する必要もドライバーをインストールする必要もありません。その場合、以下のパラメータをホストインベントリでFalseに設定できます。この設定は、ディストリビューションからのカーネルモジュールを使用する場合にも当てはまります。
infiniband_configure_repos: True
infiniband_install_kernel_modules: True
IPoIB
IPoIBで構成するインターフェースのリストを定義します。リストの各項目には、インターフェース名(iface)、デフォルトのIPv4アドレスからのオフセット、CIDRプレフィックスを定義する必要があります。リストが定義されていない場合、この役割はIPoIBインターフェースを構成しません。
infiniband_ipoib_interfaces:
- iface: 'ib0'
offset: -3064461568
prefix: 17
オフセットを計算するには、以下を使用します:
$ python3 <<EOF
import ipaddress
source_net='192.168.121.0'
target_net='10.0.128.0'
offset=(int(ipaddress.ip_address(source_net))-int(ipaddress.ip_address(target_net)))
print(f"offset: -{offset}")
EOF
仮想化 - SR-IOV
適用するパラメータを持つMellanox HCAのリストを設定します。pci_busは/sys/bus/pci/devices/の値と一致する必要があります(例:/sys/bus/pci/devices/0000:41:00.0/)
infiniband_hca_devices:
- device: mlx5_0
pci_bus: '0000:41:00.0'
sriov_en: True
num_of_vfs: 8
現在サポートされているのはSRIOV_EN
とNUM_OF_VFS
パラメータのみです。
VFの64ビットIB GUIDに使用するプレフィックスを定義します。この役割は、次のようにGUIDを定義します:
- プレフィックス(40ビット)
- "00"(8ビット)
- デバイスID(8ビット):上記のリストinfiniband_hca_devicesのアイテムインデックス
- VF ID(8ビット):infiniband_hca_devices[*].num_of_vfs内のVFのインデックス
SR-IOVを使用して複数のホストを設定する予定がある場合、デフォルトとは異なる値を設定することを強くお勧めします。
高可用性構成でのフェイルオーバーを可能にするために、特定のVMが実行される可能性のあるすべてのホストで同じinfiniband_hca_devicesとinfiniband_guid_prefixを使用してください。
infiniband_guid_prefix: "4d:69:6c:61:00"
デフォルトでは、この役割は新しい設定を読み込むためにホストを再起動します。再起動を禁止することも可能です:
infiniband_allow_reboot: false
高可用性クラスターで予期しないダウンタイムを避けるために、この役割はホストを一つずつ再起動します。スロットルを増やすことも可能です:
infiniband_throttle_reboot: "{{ ansible_play_hosts | length }}"
例のプレイブック
InfiniBandをインストールして構成します:
- hosts: computes:&infiniband
roles:
- role: mila.infiniband
tags: 'role::infiniband'