Exist many problem with order interfaces for some HW and VM. e.g. if VMWare use more 4 interfaces, then interfaces sequence will be various.
We can use udev rules for these and other platforms.
Detect by dmi/board_name or dmi/sys_vendor and following rules
For VMWare
ATTR{[dmi/id]sys_vendor}!="VMware, Inc.", GOTO="end_vmware_nic"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:0b:00.0", ENV{VYOS_IFNAME}="eth0"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:13:00.0", ENV{VYOS_IFNAME}="eth1"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:1b:00.0", ENV{VYOS_IFNAME}="eth2"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:04:00.0", ENV{VYOS_IFNAME}="eth3"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:0c:00.0", ENV{VYOS_IFNAME}="eth4"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:14:00.0", ENV{VYOS_IFNAME}="eth5"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:1c:00.0", ENV{VYOS_IFNAME}="eth6"
LABEL="end_vmware_nic"For Edge-Core model SAF51015I-0318-EC
ATTR{[dmi/id]board_name}!="SAF51015I-0318-EC", GOTO="end_ec_nic"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:02:00.0", ENV{VYOS_IFNAME}="eth1"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:03:00.0", ENV{VYOS_IFNAME}="eth2"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:04:00.0", ENV{VYOS_IFNAME}="eth3"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:05:00.0", ENV{VYOS_IFNAME}="eth4"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:06:00.0", ENV{VYOS_IFNAME}="eth5"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:06:00.1", ENV{VYOS_IFNAME}="eth6"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:06:00.2", ENV{VYOS_IFNAME}="eth7"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:06:00.3", ENV{VYOS_IFNAME}="eth8"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:0a:00.0", ENV{VYOS_IFNAME}="eth9"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:0a:00.1", ENV{VYOS_IFNAME}="eth10"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:0b:00.0", ENV{VYOS_IFNAME}="eth11"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:0b:00.1", ENV{VYOS_IFNAME}="eth12"
LABEL="end_ec_nic"