External IP fact(s)
Sage Imel sage@sagenite.net
Provides an external_ip4 fact that shows your ipv4 IP address as returned by http://ipv4.icanhazip.com. Provides and an external_ip6 fact that shows your ipv6 IP address as returned by http://ipv6.icanhazip.com.
Useful if you have a host with a dynamic IP address.
Limitations
Ruby doesn’t seem to let you specify which interface Web::HTTP uses, so on a box with multiple interfaces your milage may very.
https://raw.githubusercontent.com/nightfly19/puppet-external_ip/master/lib/facter/external_ip4.rb
require 'net/http'
Facter.add("external_ip4") do
setcode do
begin
target = URI.parse('http://ipv4.icanhazip.com/')
Net::HTTP.get_response(target.host, target.path).body.chomp
rescue
nil
end
end
end
require 'net/http'
https://raw.githubusercontent.com/nightfly19/puppet-external_ip/master/lib/facter/external_ip6.rb
Facter.add("external_ip6") do
setcode do
begin
target = URI.parse('http://ipv6.icanhazip.com/')
Net::HTTP.get_response(target.host, target.path).body.chomp
rescue
nil
end
end
end