summaryrefslogtreecommitdiff
path: root/lib/facter
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2023-05-05 00:31:37 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2023-05-05 00:31:37 +0200
commiteb38e6252b3c52a44d0d33679b3bc3178674c7f8 (patch)
treeb7958e38f9893c347af4c04a53f65a103cef3292 /lib/facter
parentInitial commit (diff)
downloaddns-eb38e6252b3c52a44d0d33679b3bc3178674c7f8.tar.gz
dns-eb38e6252b3c52a44d0d33679b3bc3178674c7f8.tar.xz
Everything
Diffstat (limited to 'lib/facter')
-rw-r--r--lib/facter/dns_zone_serial.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/facter/dns_zone_serial.rb b/lib/facter/dns_zone_serial.rb
new file mode 100644
index 0000000..6aca94e
--- /dev/null
+++ b/lib/facter/dns_zone_serial.rb
@@ -0,0 +1,20 @@
+require 'resolv'
+
+Facter.add(:dns_zone_serial) do
+ confine do
+ Facter.Util.Resolution.which('named-checkconf')
+ end
+
+ setcode do
+ dns = Resolv::DNS.new(nameserver: ['localhost'])
+ zones = `named-checkconf -l`
+ .split("\n")
+ .map { |line| line.split(' ') }
+ .filter { |zone| zone.last == 'master' }
+ zone_map = {}
+ zones.map do |zone|
+ zone_map["#{zone[0]}."] = dns.getresource(zone[0], Resolv::DNS::Resource::IN::SOA).serial
+ end
+ zone_map
+ end
+end