summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2023-06-08 13:36:35 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2023-06-08 13:36:35 +0200
commit858a9dbc499ae872551238e0ec3d4b61cc4f6add (patch)
treebc56be2d5c99cee80ce56b9e73d5a068f3e78a50
parentwork (diff)
downloaddns-858a9dbc499ae872551238e0ec3d4b61cc4f6add.tar.gz
dns-858a9dbc499ae872551238e0ec3d4b61cc4f6add.tar.xz
Propagate binaries.
-rw-r--r--lib/puppet/provider/dns_record2/named.rb2
-rw-r--r--lib/puppet/provider/dns_zone2/named.rb8
-rw-r--r--lib/puppet/type/dns_record2.rb10
-rw-r--r--lib/puppet/type/dns_zone2.rb38
-rw-r--r--manifests/record.pp13
-rw-r--r--manifests/zone.pp4
6 files changed, 61 insertions, 14 deletions
diff --git a/lib/puppet/provider/dns_record2/named.rb b/lib/puppet/provider/dns_record2/named.rb
index 88bc73e..a055812 100644
--- a/lib/puppet/provider/dns_record2/named.rb
+++ b/lib/puppet/provider/dns_record2/named.rb
@@ -42,7 +42,7 @@ Puppet::Type.type(:dns_record2).provide(:named) do
end
def record
- lines = `named-checkzone -j -q -D #{zone} /var/named/zones/#{zone}db`
+ lines = `#{resource[:named_checkzone]} -j -q -D #{zone} /var/named/zones/#{zone}db`
.split("\n")
.map { |line| line.gsub(%r{[[:space:]]+}, ' ').split(' ') }
diff --git a/lib/puppet/provider/dns_zone2/named.rb b/lib/puppet/provider/dns_zone2/named.rb
index 3a59c81..68f57da 100644
--- a/lib/puppet/provider/dns_zone2/named.rb
+++ b/lib/puppet/provider/dns_zone2/named.rb
@@ -1,13 +1,13 @@
Puppet::Type.type(:dns_zone2).provide(:named) do
def self.instances
- `named-checkconf -l`.split("\n").map do |record|
+ `#{resource[:named_checkconf]} -l`.split("\n").map do |record|
name, cls, view, type = record.split(' ')
new(name: name, cls: cls, view: view, type: type)
end
end
def exists?
- `named-checkconf -l`
+ `#{resource[:named_checkconf]} -l`
.split("\n")
.grep(%r{^#{origin_rx} })
.empty?
@@ -15,7 +15,7 @@ Puppet::Type.type(:dns_zone2).provide(:named) do
end
def filename
- "/var/named/zones/#{resource[:name]}db"
+ "#{resource[:directory]}/#{resource[:name]}db"
end
def zone_content(records, serial_change)
@@ -56,7 +56,7 @@ Puppet::Type.type(:dns_zone2).provide(:named) do
# The current (before updating) serial of the zone
def serial
- `rndc zonestatus #{name} | awk -F' ' '/^serial:/ { print $2 }'`.to_i
+ `#{resource[:rndc]} zonestatus #{name} | awk -F' ' '/^serial:/ { print $2 }'`.to_i
end
# A regex matching the origin
diff --git a/lib/puppet/type/dns_record2.rb b/lib/puppet/type/dns_record2.rb
index 098d27d..82526cf 100644
--- a/lib/puppet/type/dns_record2.rb
+++ b/lib/puppet/type/dns_record2.rb
@@ -74,4 +74,14 @@ Puppet::Type.newtype(:dns_record2) do
TTL of this record.
EOF
end
+
+ newparam(:named_checkzone) do
+ desc <<~EOF
+ Absolute path to the named-checkzone binaries.
+
+ Used by the provider to get its initial state.
+ EOF
+
+ defaultto '/usr/bin/named-checkzone'
+ end
end
diff --git a/lib/puppet/type/dns_zone2.rb b/lib/puppet/type/dns_zone2.rb
index e21af6d..5f0b537 100644
--- a/lib/puppet/type/dns_zone2.rb
+++ b/lib/puppet/type/dns_zone2.rb
@@ -14,7 +14,7 @@ Puppet::Type.newtype(:dns_zone2, self_refresh: true) do
ensurable
def refresh
- catalog.resource("File[/var/named/zones/#{self[:name]}db]")[:content] = should_content(1)
+ catalog.resource("File[#{self[:directory]}/#{self[:name]}db]")[:content] = should_content(1)
end
# List of all DNS records (at all)
@@ -35,7 +35,7 @@ Puppet::Type.newtype(:dns_zone2, self_refresh: true) do
ensure: self[:ensure],
path: provider.filename,
# notify: self[:notify],
- validate_cmd: "/usr/sbin/named-checkzone #{self[:origin]} %"
+ validate_cmd: "#{self[:named_checkzone]} #{self[:origin]} %"
}
[:owner,
@@ -61,6 +61,28 @@ Puppet::Type.newtype(:dns_zone2, self_refresh: true) do
[Puppet::Type.type(:file).new(params)]
end
+ newparam(:named_checkzone) do
+ desc <<-EOF
+ Absolute path to the named-checkzone binary.
+ EOF
+
+ defaultto '/usr/bin/named-checkzone'
+ end
+
+ newparam(:named_checkconf) do
+ desc <<-EOF
+ Absolute pathto the named-checkconf binary
+ EOF
+ defaultto '/usr/bin/named-checkconf'
+ end
+
+ newparam(:rndc) do
+ desc <<-EOF
+ Absolute path to the rndc binary
+ EOF
+ defaultto '/usr/bin/rndc'
+ end
+
# Returning "our" file resource causes errors on the file to
# propagate out from us (which is NEEDED for `validate_cmd` to
# work).
@@ -73,7 +95,7 @@ Puppet::Type.newtype(:dns_zone2, self_refresh: true) do
# Ideally we wouldn't generate content here, but instead in
# `create`. But that method isn't called
def eval_generate
- catalog.resource("File[/var/named/zones/#{self[:name]}db]")[:content] = should_content(0)
+ catalog.resource("File[#{self[:directory]}/#{self[:name]}db]")[:content] = should_content(0)
[catalog.resource("File[#{provider.filename}]")]
end
@@ -278,4 +300,14 @@ Puppet::Type.newtype(:dns_zone2, self_refresh: true) do
See the file resource's documentation for details.
EOF
end
+
+ newparam(:directory) do
+ desc <<-EOF
+ Directory in which zone files will be stored.
+ EOF
+
+ defaultto '/var/named/zones'
+ end
+
+ autorequire(:file) { || [value(:directory)] }
end
diff --git a/manifests/record.pp b/manifests/record.pp
index f94d1c8..e844cd4 100644
--- a/manifests/record.pp
+++ b/manifests/record.pp
@@ -62,11 +62,12 @@ define dns::record (
}
dns_record2 { $name:
- type => $type,
- value => $value_,
- cls => $cls,
- zone => $zone,
- ttl => $ttl,
- key => $key,
+ type => $type,
+ value => $value_,
+ cls => $cls,
+ zone => $zone,
+ ttl => $ttl,
+ key => $key,
+ named_checkzone => $dns::checkzone,
}
}
diff --git a/manifests/zone.pp b/manifests/zone.pp
index bf35a52..eb2adbd 100644
--- a/manifests/zone.pp
+++ b/manifests/zone.pp
@@ -118,6 +118,10 @@ define dns::zone (
'seluser' => $seluser,
'show_diff' => $show_diff,
'ensure' => $ensure,
+ 'named_checkzone' => $dns::checkzone,
+ 'named_checkconf' => $dns::checkconf,
+ 'rndc' => $dns::rndc,
+ 'directory' => $dns::zone_directory,
}
if $ensure == 'present' {