summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2023-06-08 14:22:09 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2023-06-08 14:22:09 +0200
commit711238f45f3e1d7db3f27d30695c41d021771491 (patch)
tree1c1a0cee8579fe59cf48465a68ea82520ad539c8
parentPropagate binaries. (diff)
downloaddns-711238f45f3e1d7db3f27d30695c41d021771491.tar.gz
dns-711238f45f3e1d7db3f27d30695c41d021771491.tar.xz
Create zones and records.
-rw-r--r--lib/puppet/type/dns_record2.rb2
-rw-r--r--manifests/record.pp2
-rw-r--r--manifests/zone.pp84
-rw-r--r--types/recordentry.pp2
4 files changed, 54 insertions, 36 deletions
diff --git a/lib/puppet/type/dns_record2.rb b/lib/puppet/type/dns_record2.rb
index 82526cf..6fee57e 100644
--- a/lib/puppet/type/dns_record2.rb
+++ b/lib/puppet/type/dns_record2.rb
@@ -12,6 +12,8 @@ Puppet::Type.newtype(:dns_record2) do
ensurable
+ def create; end
+
def exists?
provider.exists?
end
diff --git a/manifests/record.pp b/manifests/record.pp
index e844cd4..aaac0e0 100644
--- a/manifests/record.pp
+++ b/manifests/record.pp
@@ -35,7 +35,7 @@ define dns::record (
Dns::Rr $type,
String $value,
Dns::Class $cls = 'IN',
- String $key = $name,
+ String $key = '@',
Optional[Dns::Ttl] $ttl = undef,
Boolean $duplicate = false,
) {
diff --git a/manifests/zone.pp b/manifests/zone.pp
index eb2adbd..b0334b3 100644
--- a/manifests/zone.pp
+++ b/manifests/zone.pp
@@ -98,55 +98,71 @@ define dns::zone (
) {
$zone_ = dns::ensure_ending_period($zone)
- $zone_serial = $facts.get("dns_zone_serial.'${zone_}'", 0)
-
- $params = {
- 'rname' => $rname,
- 'mname' => $mname,
- 'refresh' => $refresh,
- 'expire' => $expire,
- 'negative_ttl' => $negative_ttl,
- 'soa_ttl' => $soa_ttl,
- 'retry' => $retry,
- 'owner' => $owner,
- 'group' => $group,
- 'backup' => $backup,
- 'selinux_ignore_defaults' => $selinux_ignore_defaults,
- 'selrange' => $selrange,
- 'selrole' => $selrole,
- 'seltype' => $seltype,
- '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' {
+ dns_zone2 { $zone_:
+ ensure => 'present',
+ rname => $rname,
+ mname => $mname,
+ refresh => $refresh,
+ expire => $expire,
+ negative_ttl => $negative_ttl,
+ soa_ttl => $soa_ttl,
+ retry => $retry,
+ owner => $owner,
+ group => $group,
+ backup => $backup,
+ selinux_ignore_defaults => $selinux_ignore_defaults,
+ selrange => $selrange,
+ selrole => $selrole,
+ seltype => $seltype,
+ seluser => $seluser,
+ show_diff => $show_diff,
+ named_checkzone => $dns::checkzone,
+ named_checkconf => $dns::checkconf,
+ rndc => $dns::rndc,
+ directory => $dns::zone_directory,
+ }
+
if $dynamic {
exec { "Dns::zone freeze ${zone_}":
command => [$dns::rndc, 'freeze', $zone_],
refreshonly => true,
+ notify => Dns_zone2[$zone_],
}
- ~> dns_zone2 { $zone_:
- * => $params,
- }
- ~> exec { "Dns::zone thaw ${zone_}":
+
+ exec { "Dns::zone thaw ${zone_}":
command => [$dns::rndc, 'thaw', $zone_],
refreshonly => true,
subscribe => Dns_zone2[$zone_],
}
} else {
- dns_zone2 { $zone_:
- * => $params,
- }
- ~> exec { "Dns::zone reload ${zone_}":
+ exec { "Dns::zone reload ${zone_}":
command => [$dns::rndc, 'reload', $zone_],
refreshonly => true,
+ subscribe => Dns_zone2[$zone_],
+ }
+ }
+
+ $ns.each |$name| {
+ dns::record { "${zone_} NS ${name}":
+ zone => $zone_,
+ key => '@',
+ type => 'NS',
+ value => $name,
}
}
+
+ $records.each |$record| {
+ $name = "${zone_} ${record['type']} ${record['key']} ${record['value']}"
+ dns::record { $name:
+ zone => $zone_,
+ type => $record['type'],
+ value => $record['value'],
+ cls => $record['dns_class'] or 'IN',
+ ttl => $record['ttl'],
+ }
+ }
+
} else {
dns_zone2 { $zone_:
ensure => 'absent',
diff --git a/types/recordentry.pp b/types/recordentry.pp
index 95a8045..3d69836 100644
--- a/types/recordentry.pp
+++ b/types/recordentry.pp
@@ -4,5 +4,5 @@ type Dns::Recordentry = Struct[{
type => Dns::Rr,
ttl => Optional[Dns::Ttl],
dns_class => Optional[Dns::Class],
- dns_name => Optional[String],
+ # dns_name => Optional[String],
}]