mila.infiniband
InfiniBand
Este rol instala y configura interfaces InfiniBand.
Variables del Rol
Instalación
Define los repositorios APT o YUM/DNF, con la ruta a la clave GPG.
# Repositorio APT por defecto
infiniband_apt_repository: 'deb https://linux.mellanox.com/public/repo/mlnx_ofed/latest/ubuntu18.04/amd64/ ./'
# Repositorio yum/dnf por defecto
infiniband_yum_repository: 'https://linux.mellanox.com/public/repo/mlnx_ofed/latest/rhel8.3/$basearch/'
# Clave GPG de Mellanox
infiniband_gpg_key: 'http://www.mellanox.com/downloads/ofed/RPM-GPG-KEY-Mellanox'
Para actualizar los paquetes a la última versión disponible.
infiniband_upgrade: True
Para establecer la prioridad del repositorio (solo APT).
infiniband_apt_priority: 490
El nombre del paquete de encabezados del núcleo puede cambiar entre distribuciones. Esto se puede definir con:
infiniband_kernel_headers_package: 'linux-headers'
Algunos dispositivos como el NVIDIA DGX ejecutan su propia pila de software. Cuando un dispositivo ya gestiona la instalación de los controladores Mellanox OFED, no es necesario configurar repositorios adicionales o instalar los controladores. En tales casos, los parámetros a continuación pueden configurarse en False en el inventario del host. Esto también es cierto al usar los módulos del núcleo de la distribución.
infiniband_configure_repos: True
infiniband_install_kernel_modules: True
IPoIB
Define la lista de interfaces a configurar con IPoIB. Cada elemento de la lista debe definir el nombre de la interfaz (iface), el desplazamiento desde la dirección ipv4 predeterminada y el prefijo CIDR. Si la lista no se define, el rol no configurará ninguna interfaz IPoIB.
infiniband_ipoib_interfaces:
- iface: 'ib0'
offset: -3064461568
prefix: 17
Para calcular el desplazamiento, utiliza:
$ 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
Virtualización - SR-IOV
Configura la lista de HCAs de Mellanox con los parámetros a aplicar. El pci_bus debe coincidir con el valor en /sys/bus/pci/devices/ (por ejemplo, /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
Solo se admiten los parámetros SRIOV_EN
y NUM_OF_VFS
por ahora.
Define el prefijo a usar para el GUID de IB de 64 bits de los VFs. El rol definirá el GUID con:
- prefijo (40 bits)
- "00" (8 bits)
- ID de dispositivo (8 bits): índice del elemento en la lista infiniband_hca_devices anterior
- ID de VF (8 bits): índice de VF en el rango (infiniband_hca_devices[*].num_of_vfs)
Se recomienda encarecidamente definir un valor diferente al predeterminado si planeas configurar más de un host con SR-IOV en tu red IB.
Para permitir la conmutación por error en una configuración de alta disponibilidad, asegúrate de usar los mismos infiniband_hca_devices y infiniband_guid_prefix para todos los hosts donde podría ejecutarse una VM determinada.
infiniband_guid_prefix: "4d:69:6c:61:00"
Por defecto, el rol reiniciará los hosts para cargar cualquier nueva configuración. Es posible prohibir el reinicio con:
infiniband_allow_reboot: false
Para evitar cualquier tiempo de inactividad inesperado en clústeres de alta disponibilidad, el rol reiniciará los hosts uno tras otro. Es posible aumentar el control con:
infiniband_throttle_reboot: "{{ ansible_play_hosts | length }}"
Ejemplo de Playbook
Instala y configura InfiniBand:
- hosts: computes:&infiniband
roles:
- role: mila.infiniband
tags: 'role::infiniband'
ansible-galaxy install mila.infiniband