diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-06-08 14:22:09 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-06-08 14:22:09 +0200 |
commit | 711238f45f3e1d7db3f27d30695c41d021771491 (patch) | |
tree | 1c1a0cee8579fe59cf48465a68ea82520ad539c8 | |
parent | Propagate binaries. (diff) | |
download | dns-711238f45f3e1d7db3f27d30695c41d021771491.tar.gz dns-711238f45f3e1d7db3f27d30695c41d021771491.tar.xz |
Create zones and records.
-rw-r--r-- | lib/puppet/type/dns_record2.rb | 2 | ||||
-rw-r--r-- | manifests/record.pp | 2 | ||||
-rw-r--r-- | manifests/zone.pp | 84 | ||||
-rw-r--r-- | types/recordentry.pp | 2 |
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], }] |