mila.infiniband
InfiniBand
Ta rola instaluje i konfiguruje interfejsy InfiniBand.
Zmienne roli
Instalacja
Zdefiniuj repozytoria APT lub YUM/DNF oraz ścieżkę do klucza GPG.
# Domyślne repozytorium apt
infiniband_apt_repository: 'deb https://linux.mellanox.com/public/repo/mlnx_ofed/latest/ubuntu18.04/amd64/ ./'
# Domyślne repozytorium yum/dnf
infiniband_yum_repository: 'https://linux.mellanox.com/public/repo/mlnx_ofed/latest/rhel8.3/$basearch/'
# Klucz GPG Mellanox
infiniband_gpg_key: 'http://www.mellanox.com/downloads/ofed/RPM-GPG-KEY-Mellanox'
Aby zaktualizować pakiety do najnowszej dostępnej wersji.
infiniband_upgrade: True
Aby ustawić priorytet repozytorium (tylko APT).
infiniband_apt_priority: 490
Nazwa pakietu nagłówków jądra może się różnić w różnych dystrybucjach. Można to zdefiniować za pomocą:
infiniband_kernel_headers_package: 'linux-headers'
Niektóre urządzenia, takie jak NVIDIA DGX, korzystają z własnej stosu oprogramowania. Kiedy urządzenie zarządza już instalacją sterowników Mellanox OFED, nie ma potrzeby konfigurowania dodatkowych repozytoriów ani instalowania sterowników. W takich przypadkach poniższe parametry można ustawić na False w inwentarzu hostów. To samo dotyczy korzystania z modułów jądra z dystrybucji.
infiniband_configure_repos: True
infiniband_install_kernel_modules: True
IPoIB
Zdefiniuj listę interfejsów do skonfigurowania z IPoIB. Każdy element listy musi definiować nazwę interfejsu (iface), przesunięcie od domyślnego adresu ipv4 i prefiks CIDR. Jeśli lista nie jest zdefiniowana, rola nie skonfiguruje żadnego interfejsu IPoIB.
infiniband_ipoib_interfaces:
- iface: 'ib0'
offset: -3064461568
prefix: 17
Aby obliczyć przesunięcie, użyj:
$ 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
Wirtualizacja - SR-IOV
Skonfiguruj listę urządzeń Mellanox HCA z zastosowanymi parametrami. pci_bus musi odpowiadać wartości w /sys/bus/pci/devices/ (np. /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
Na razie wspierane są tylko parametry SRIOV_EN
i NUM_OF_VFS
.
Zdefiniuj prefiks, który ma być używany dla 64-bitowego IB GUID VFs. Rola zdefiniuje GUID z:
- prefiks (40 bitów)
- "00" (8 bitów)
- identyfikator urządzenia (8 bitów): indeks elementu w liście infiniband_hca_devices powyżej
- identyfikator VF (8 bitów): indeks VF w zakresie (infiniband_hca_devices[*].num_of_vfs)
Zaleca się zdefiniowanie wartości innej niż domyślna, jeśli planujesz skonfigurować więcej niż jeden host z SR-IOV w swojej strukturze IB.
Aby umożliwić przełączanie w konfiguracji wysokiej dostępności, upewnij się, że używasz tych samych infiniband_hca_devices i infiniband_guid_prefix dla wszystkich hostów, na których może działać dany VM.
infiniband_guid_prefix: "4d:69:6c:61:00"
Domyślnie rola zrestartuje hosty, aby załadować nową konfigurację. Można zabronić restartu, ustawiając:
infiniband_allow_reboot: false
Aby uniknąć nieprzewidzianych przestojów w klastrach o wysokiej dostępności, rola będzie restartować hosty jeden po drugim. Można zwiększyć opóźnienie z użyciem:
infiniband_throttle_reboot: "{{ ansible_play_hosts | length }}"
Przykładowy skrypt
Zainstaluj i skonfiguruj InfiniBand:
- hosts: computes:&infiniband
roles:
- role: mila.infiniband
tags: 'role::infiniband'
ansible-galaxy install mila.infiniband