Facter.add(:application_ip, :timeout => 2) do
setcode do
require 'resolv'

begin
if fqdn = Facter.value(:fqdn)
ip = Resolv.getaddress(fqdn)
unless ip == "127.0.0.1"
ip
end
else
nil
end

rescue Resolv::ResolvError

if Facter.value(:ipaddress_bond2)
Facter.value(:ipaddress_bond2)
elsif Facter.value(:ipaddress_eth2)
Facter.value(:ipaddress_eth2)
elsif Facter.value(:ipaddress_eth1)
Facter.value(:ipaddress_eth1)
elsif Facter.value(:ipaddress_eth0)
Facter.value(:ipaddress_eth0)
end

rescue NoMethodError # i think this is a bug in resolv.rb?
nil
end
end
end