A simple memo about how to create proper PXE bootable KVM instances on RHEL8.

Create Virtual Port

Multiple different type of port can be used on KVM instances, you can choose physical interface such as eno1 or bond0, or you can use bridge as its overlayer.

Create bond0 based on eno2:

nmcli con add type team con-name bond0 ifname bond0 config '{"runner": {"name": "activebackup"}}'
nmcli con add type team-slave con-name bond0-eno2 ifname eno2 master bond0
nmcli dev dis eno2
nmcli con up bond0

Create bridge:

nmcli con add type bridge con-name pxe ifname pxe
nmcli con add type bridge-slave con-name pxe-bond0 ifname bond0 master pxe  # this may not work as nmcli doesn't support adding bond in a bridge, has to be done through network-script
nmcli con add type bridge-slave con-name pxe-eno2 ifname eno2 master pxe

Create Instance With PXE Bridge

virt-install --network=bridge:pxe --pxe --name rhel8 --memory 2048 --vcpus 2 --disk size=80 --os-variant rhel8.0