diff --git a/puppet/modules/profiles/lib/facter/external_ips.rb b/puppet/modules/profiles/lib/facter/external_ips.rb index f5b81bafd..1936adf4c 100644 --- a/puppet/modules/profiles/lib/facter/external_ips.rb +++ b/puppet/modules/profiles/lib/facter/external_ips.rb @@ -1,9 +1,15 @@ -require 'open-uri' +require 'net/http' +require 'resolv' Facter.add(:external_ip4) do setcode do begin - URI.parse('http://ipv4.icanhazip.com/').read.chomp + Resolv::DNS.open do |dns| + addr = dns.getresource("ipv4.icanhazip.com", Resolv::DNS::Resource::IN::A).address.to_s + Net::HTTP.start(addr) do |http| + http.get('http://ipv4.icanhazip.com/').body.chomp + end + end rescue nil end @@ -13,7 +19,12 @@ Facter.add(:external_ip6) do setcode do begin - URI.parse('http://ipv6.icanhazip.com/').read.chomp + Resolv::DNS.open do |dns| + addr = dns.getresource("ipv6.icanhazip.com", Resolv::DNS::Resource::IN::AAAA).address.to_s + Net::HTTP.start(addr) do |http| + http.get('http://ipv6.icanhazip.com/').body.chomp + end + end rescue nil end