Creates a dns_rr resource for managing RRs

This commit is contained in:
Nate Riffe
2013-11-30 19:27:48 -06:00
parent 4023ae6aff
commit 3e6ab1b0d4
3 changed files with 192 additions and 1 deletions
+65
View File
@@ -0,0 +1,65 @@
Puppet::Type.newtype(:dns_rr) do
@doc = "A Resource Record in the DNS"
ensurable
newparam(:spec, :namevar => true) do
desc "Class/Type/Name for the resource record"
validate do |value|
if (value =~ /^([A-Z]+)\/([A-Z]+)\/[a-zA-Z0-9.-]+$/)
rrclass = $1
if ( !%w(IN CH HS).include? rrclass )
raise ArgumentError, "Invalid resource record class: %s" % rrdata
end
type = $2
if ( !%w(A AAAA CNAME NS MX SRV NAPTR PTR).include? type)
raise ArgumentError, "Invalid resource record type: %s" % type
end
else
raise ArgumentError, "%s must be of the form Class/Type/Name" % value
end
end
end
newproperty(:ttl) do
desc 'Time to live of the resource record'
defaultto 43200
munge do |value|
Integer(value)
end
end
newproperty(:rrdata, :array_matching => :all) do
desc 'The resource record\'s data'
def insync?(is)
Array(is).sort == Array(@should).sort
end
end
newparam(:zone) do
desc 'The zone to update'
end
newparam(:server) do
desc 'The master server for the resource record'
defaultto 'localhost'
end
newparam(:keyname) do
desc 'Keyname for the TSIG key used to update the record'
defaultto 'update'
end
newparam(:hmac) do
desc 'The HMAC type of the update key'
defaultto 'HMAC-SHA1'
end
newparam(:secret) do
desc 'The secret of the update key'
end
end