mila.infiniband
InfiniBand
Diese Rolle installiert und konfiguriert InfiniBand-Schnittstellen.
Rollenvariablen
Installation
Definiere die APT- oder YUM/DNF-Repositories mit dem Pfad zum GPG-Schlüssel.
# Standard apt Repository
infiniband_apt_repository: 'deb https://linux.mellanox.com/public/repo/mlnx_ofed/latest/ubuntu18.04/amd64/ ./'
# Standard yum/dnf Repository
infiniband_yum_repository: 'https://linux.mellanox.com/public/repo/mlnx_ofed/latest/rhel8.3/$basearch/'
# Mellanox GPG Schlüssel
infiniband_gpg_key: 'http://www.mellanox.com/downloads/ofed/RPM-GPG-KEY-Mellanox'
Um die Pakete auf die neueste verfügbare Version zu aktualisieren.
infiniband_upgrade: True
Um die Priorität des Repositories festzulegen (nur APT).
infiniband_apt_priority: 490
Der Name des Kernel-Headers-Pakets kann von Distribution zu Distribution unterschiedlich sein. Dies kann definiert werden mit:
infiniband_kernel_headers_package: 'linux-headers'
Einige Geräte wie der NVIDIA DGX betreiben ihren eigenen Software-Stack. Wenn ein Gerät bereits die Installation der Mellanox OFED-Treiber verwaltet, ist es nicht notwendig, zusätzliche Repositories zu konfigurieren oder die Treiber zu installieren. In solchen Fällen können die untenstehenden Parameter im Hostinventar auf False gesetzt werden. Dies gilt auch, wenn die Kernel-Module aus der Distribution verwendet werden.
infiniband_configure_repos: True
infiniband_install_kernel_modules: True
IPoIB
Definiere die Liste der Schnittstellen, die mit IPoIB konfiguriert werden sollen. Jedes Element der Liste muss den Schnittstellennamen (iface), den Offset zur Standard-IPv4-Adresse und das CIDR-Präfix definieren. Wenn die Liste nicht definiert ist, wird die Rolle keine IPoIB-Schnittstelle konfigurieren.
infiniband_ipoib_interfaces:
- iface: 'ib0'
offset: -3064461568
prefix: 17
Um den Offset zu berechnen, verwende:
$ 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
Virtualisierung - SR-IOV
Konfiguriere die Liste der Mellanox HCAs mit den anzuwendenden Parametern. Der pci_bus muss mit dem Wert in /sys/bus/pci/devices/ übereinstimmen (z.B. /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
Nur die Parameter SRIOV_EN
und NUM_OF_VFS
werden derzeit unterstützt.
Definiere das Präfix für die 64-Bit IB GUID von VFs. Die Rolle wird die GUID mit festlegen:
- Präfix (40 Bit)
- "00" (8 Bit)
- Geräte-ID (8 Bit): Elementindex in der Liste infiniband_hca_devices oben
- VF-ID (8 Bit): Index von VF im Bereich (infiniband_hca_devices[*].num_of_vfs)
Es wird dringend empfohlen, einen anderen Wert als den Standardwert zu definieren, wenn du planst, mehr als einen Host mit SR-IOV in deinem IB-Netzwerk zu konfigurieren.
Um einen Failover in einer Hochverfügbarkeitskonfiguration zu ermöglichen, stelle sicher, dass du die gleichen infiniband_hca_devices und infiniband_guid_prefix für alle Hosts verwendest, auf denen eine bestimmte VM laufen könnte.
infiniband_guid_prefix: "4d:69:6c:61:00"
Standardmäßig wird die Rolle die Hosts neu starten, um jede neue Konfiguration zu laden. Es ist möglich, den Neustart zu untersagen mit:
infiniband_allow_reboot: false
Um unerwartete Ausfallzeiten in Hochverfügbarkeitsclustern zu vermeiden, wird die Rolle die Hosts der Reihe nach neu starten. Es ist möglich, die Drosselung mit zu erhöhen:
infiniband_throttle_reboot: "{{ ansible_play_hosts | length }}"
Beispiel-Playbook
Installiere und konfiguriere InfiniBand:
- hosts: computes:&infiniband
roles:
- role: mila.infiniband
tags: 'role::infiniband'
ansible-galaxy install mila.infiniband