# return the set of active interfaces as an array
Facter.add("interfaces") do
setcode do
`ip -o link show`.split(/\n/).collect do |line|
value = nil
matches = line.match(/^\d*: ([^:]*): <(.*,)?UP(,.*)?>/)
if !matches.nil?
value = matches[1]
end
value
end.compact.sort.join(" ")
end
end

## root@junglist /var/lib/puppet/lib/facter# facter|grep ipaddress
## ipaddress => 123.100.70.1
## ipaddress_eth0 => 123.100.70.1
## ipaddress_eth0_0 => 123.100.70.2
## ipaddress_eth0_1 => 123.100.70.3
## ipaddress_eth0_2 => 123.100.70.4
## ipaddress_eth0_3 => 123.100.70.5