28 lines
610 B
Ruby
28 lines
610 B
Ruby
# frozen_string_literal: true
|
|
|
|
# arpa_fact.rb
|
|
|
|
require 'facter'
|
|
|
|
Facter.add(:arpa) do
|
|
setcode do
|
|
arpa_info = {}
|
|
Facter.value(:networking)['interfaces'].each do |interface_name, values|
|
|
next unless values.key?('ip')
|
|
|
|
ip_address = values['ip']
|
|
reversed_ip_parts = ip_address.split('.').reverse
|
|
addr = "#{reversed_ip_parts.join('.')}.in-addr.arpa"
|
|
|
|
trimmed_ip_parts = reversed_ip_parts[1..]
|
|
zone = "#{trimmed_ip_parts.join('.')}.in-addr.arpa"
|
|
|
|
arpa_info[interface_name] = {
|
|
'zone' => zone,
|
|
'addr' => addr
|
|
}
|
|
end
|
|
arpa_info
|
|
end
|
|
end
|