mila.infiniband
InfiniBand
Ce rôle installe et configure les interfaces InfiniBand.
Variables de rôle
Installation
Définissez les dépôts APT ou YUM/DNF, avec le chemin vers la clé GPG.
# Dépôt APT par défaut
infiniband_apt_repository: 'deb https://linux.mellanox.com/public/repo/mlnx_ofed/latest/ubuntu18.04/amd64/ ./'
# Dépôt yum/dnf par défaut
infiniband_yum_repository: 'https://linux.mellanox.com/public/repo/mlnx_ofed/latest/rhel8.3/$basearch/'
# Clé GPG de Mellanox
infiniband_gpg_key: 'http://www.mellanox.com/downloads/ofed/RPM-GPG-KEY-Mellanox'
Pour mettre à jour les paquets à la dernière version disponible.
infiniband_upgrade: True
Pour fixer la priorité du dépôt (uniquement APT).
infiniband_apt_priority: 490
Le nom du paquet des en-têtes du noyau peut changer selon les distributions. Cela peut être défini par :
infiniband_kernel_headers_package: 'linux-headers'
Certaines machines comme le NVIDIA DGX utilisent leur propre pile logicielle. Lorsque une machine gère déjà l'installation des pilotes Mellanox OFED, il n'est pas nécessaire de configurer des dépôts supplémentaires ou d'installer les pilotes. Dans ces cas, les paramètres ci-dessous peuvent être mis à False dans l'inventaire des hôtes. C'est également vrai lors de l'utilisation des modules du noyau fournis par la distribution.
infiniband_configure_repos: True
infiniband_install_kernel_modules: True
IPoIB
Définissez la liste des interfaces à configurer avec IPoIB. Chaque élément de la liste doit définir le nom de l'interface (iface), le décalage à partir de l'adresse ipv4 par défaut et le préfixe CIDR. Si la liste n'est pas définie, le rôle ne configurera aucune interface IPoIB.
infiniband_ipoib_interfaces:
- iface: 'ib0'
offset: -3064461568
prefix: 17
Pour calculer le décalage, utilisez :
$ 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
Virtualisation - SR-IOV
Configurez la liste des HCAs Mellanox avec les paramètres à appliquer. Le pci_bus doit correspondre à la valeur dans /sys/bus/pci/devices/ (par ex. : /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
Seuls les paramètres SRIOV_EN
et NUM_OF_VFS
sont pris en charge pour le moment.
Définissez le préfixe à utiliser pour le GUID IB 64 bits des VFs. Le rôle définira le GUID avec :
- préfixe (40 bits)
- "00" (8 bits)
- ID de dispositif (8 bits) : indice de l'élément dans la liste infiniband_hca_devices ci-dessus
- ID de VF (8 bits) : indice de VF dans la plage (infiniband_hca_devices[*].num_of_vfs)
Il est fortement recommandé de définir une valeur différente de la valeur par défaut si vous prévoyez de configurer plus d'un hôte avec SR-IOV dans votre réseau IB.
Pour permettre un basculement dans une configuration haute disponibilité, assurez-vous d’utiliser les mêmes infiniband_hca_devices et infiniband_guid_prefix pour tous les hôtes où une VM donnée pourrait fonctionner.
infiniband_guid_prefix: "4d:69:6c:61:00"
Par défaut, le rôle redémarrera les hôtes pour charger toute nouvelle configuration. Il est possible d'interdire le redémarrage avec :
infiniband_allow_reboot: false
Pour éviter tout temps d'arrêt inattendu dans les clusters haute disponibilité, le rôle redémarrera les hôtes un par un. Il est possible d'augmenter le rythme avec :
infiniband_throttle_reboot: "{{ ansible_play_hosts | length }}"
Exemple de Playbook
Installer et configurer InfiniBand :
- hosts: computes:&infiniband
roles:
- role: mila.infiniband
tags: 'role::infiniband'
ansible-galaxy install mila.infiniband