diff --git a/site/profiles/lib/facter/country.rb b/site/profiles/lib/facter/country.rb new file mode 100644 index 0000000..52977d6 --- /dev/null +++ b/site/profiles/lib/facter/country.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +# set country based on the subnet + +Facter.add('country') do + setcode do + # use facts['networking']['ip']to find the promary IP address + ip = Facter.value(:networking)['ip'] + + # subnet to region mapping + subnet_to_country = { + '198.18.17.0/24' => 'au' + } + + require 'ipaddr' + + # Find the region for the IP + country = 'stateless' # default to 'stateless' if no country matches + subnet_to_country.each do |subnet, country_initial| + if IPAddr.new(subnet).include?(IPAddr.new(ip)) + country = country_initial + break + end + end + + country + end +end diff --git a/site/profiles/lib/facter/region.rb b/site/profiles/lib/facter/region.rb index 966fa10..248fb12 100644 --- a/site/profiles/lib/facter/region.rb +++ b/site/profiles/lib/facter/region.rb @@ -9,7 +9,7 @@ Facter.add('region') do # subnet to region mapping subnet_to_region = { - '198.18.17.0/24' => 'au-drw-1' + '198.18.17.0/24' => 'drw1' } require 'ipaddr'