2.1. Prerequisites

2.1.1. Host requirements

Enable IOMMU in kernel

Ensure that the following arguments are present in your kernel command line to enable the IOMMU:

  • iommu=pt intel_iommu=on: to enable the IOMMU

You can check the current kernel arguments with:

# cat /proc/cmdline
BOOT_IMAGE=(hd0,gpt2)/vmlinuz-4.18.0-408.el8.x86_64 root=UUID=7e800c48-c2b0-452e-b1d3-357265dc3b2d ro crashkernel=auto iommu=pt intel_iommu=on rhgb quiet

If you need to change the arguments, change the GRUB_CMDLINE_LINUX parameter in /etc/default/grub. Then run:

# grub2-mkconfig -o /boot/grub2/grub.cfg

Then reboot.

Note

You may need to enable VT-d in your BIOS too.

To check that the IOMMU is properly enabled, check the presence of files in the following directory:

# ls /sys/class/iommu/
dmar0  dmar1

SR-IOV

Ensure SR-IOV is enabled and configured. To create VFs, use the following commands:

# PF_PCI_ADDR=0000:02:00.0
# echo 8 > /sys/bus/pci/devices/${PF_PCI_ADDR}/sriov_numvfs

Warning

Adapt the PF PCI bus address to your platform.

# lspci | grep -i eth
02:00.0 Ethernet controller: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01)
02:00.1 Ethernet controller: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01)
02:10.0 Ethernet controller: Intel Corporation X540 Ethernet Controller Virtual Function (rev 01)
02:10.2 Ethernet controller: Intel Corporation X540 Ethernet Controller Virtual Function (rev 01)
02:10.4 Ethernet controller: Intel Corporation X540 Ethernet Controller Virtual Function (rev 01)
02:10.6 Ethernet controller: Intel Corporation X540 Ethernet Controller Virtual Function (rev 01)
02:11.0 Ethernet controller: Intel Corporation X540 Ethernet Controller Virtual Function (rev 01)
02:11.2 Ethernet controller: Intel Corporation X540 Ethernet Controller Virtual Function (rev 01)
02:11.4 Ethernet controller: Intel Corporation X540 Ethernet Controller Virtual Function (rev 01)
02:11.6 Ethernet controller: Intel Corporation X540 Ethernet Controller Virtual Function (rev 01)
# lspci -s 02:10.0 -k -n
02:10.0 0200: 8086:1515 (rev 01)
     Subsystem: 8086:5003
     Kernel modules: ixgbevf
# lspci -s 02:10.2 -k -n
02:10.2 0200: 8086:1515 (rev 01)
     Subsystem: 8086:5003
     Kernel modules: ixgbevf
# ip link
[...]
4: enp2s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether a0:36:9f:e6:46:f0 brd ff:ff:ff:ff:ff:ff
    vf 0     link/ether 3e:1b:3e:f7:8e:99 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off, query_rss off
    vf 1     link/ether d2:e6:d6:d7:4f:2a brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off, query_rss off
    vf 2     link/ether f2:4d:5b:90:82:1b brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off, query_rss off
    vf 3     link/ether 7e:de:3c:bf:ca:d9 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off, query_rss off
    vf 4     link/ether f6:92:e4:8e:bf:47 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off, query_rss off
    vf 5     link/ether 86:bc:9b:9b:26:06 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off, query_rss off
    vf 6     link/ether d2:18:5c:3f:40:b5 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off, query_rss off
    vf 7     link/ether ca:5b:25:74:be:7a brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off, query_rss off
[...]

ansible

Ensure ansible is installed.

# ansible --version
ansible [core 2.13.5]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.9/site-packages/ansible
ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/bin/ansible
python version = 3.9.13 (main, Jun 24 2022, 15:32:51) [GCC 8.5.0 20210514 (Red Hat 8.5.0-13)]
jinja version = 3.1.2
libyaml = True

It can be installed with:

# dnf install ansible-core

Ansible also requires the netaddr python module to be able to execute the OCP installation playbook. It can be installed with this command:

# python3.9 -m pip install netaddr

Note

The Python version used above must match the one used by Ansible.

passlib and bcrypt

During OCP cluster deployment, an admin user will be created with htpasswd.

Ensure passlib and bcrypt are installed.

# python3.9 -m pip list --format=columns | grep passlib
passlib      1.7.4
# python3.9 -m pip list --format=columns | grep bcrypt
bcrypt       4.0.1

You can install these Python modules with:

# python3.9 -m pip install passlib
# python3.9 -m pip install bcrypt

Internet connectivity

Ensure Internet connectivity is available from the host machine as some packages will be downloaded during the installation.