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"