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/'
# GPG ключ Mellanox
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 бит)
- идентификатор устройства (8 бит): индекс элемента в списке infiniband_hca_devices выше
- идентификатор VF (8 бит): индекс VF в диапазоне(infiniband_hca_devices[*].num_of_vfs)
Настоятельно рекомендуется определить значение, отличное от значения по умолчанию, если вы планируете настраивать более одного хоста с SR-IOV в вашей сети 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'
ansible-galaxy install mila-iqia/ansible-role-infiniband