In puppet-agent 7.0.0 interfaces without an ipaddress are not anymore reported in $facts['interfaces'] and also in no other fact.
Facter should report all interfaces somewhere.
irb$ File.readlines('/proc/net/dev').reject{|l| l=~/\|/ }.map{|l| l.split(':',2).first.strip }.sort.join(',')
=> "br0,br1,eno1,enp3s0f1,lo,virbr0,virbr0-nic,vnet0,vnet1,vnet10,vnet11,vnet12,vnet13,vnet14,vnet15,vnet17,vnet2,vnet3,vnet4,vnet5,vnet6,vnet7,vnet8,vnet9"
vs.
# puppet facts show interfaces
{
"interfaces": "br1,lo,virbr0"
}
Peter Meier, we think the problem is that to get the interfaces' info, we're using the command 'ip -o address'. This doesn't give us details about the inactive interfaces. To solve this, we'll use the 'ip a' command.
Andrei Filipovici don't forget about the -json option like ip -json addr show to get nice JSON for easy and parsing.