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
。
定义用于64位IB GUID的VF前缀。该角色将使用以下方式定义GUID:
- 前缀(40位)
- "00"(8位)
- 设备ID(8位):在infiniband_hca_devices列表中的项索引
- VF ID(8位):在范围(infiniband_hca_devices[*].num_of_vfs)内的VF索引
如果您计划在IB网络中配置多个主机,强烈建议定义与默认值不同的值。
以允许在高可用配置中故障转移,请确保对所有可能运行特定虚拟机的主机使用相同的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'