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'
Acerca del proyecto

Install and configure InfiniBand interfaces

Instalar
ansible-galaxy install mila.infiniband
Licencia
mit
Descargas
10.1k
Propietario
Quebec Artificial Intelligence Institute