diff options
-rw-r--r-- | lib/puppet/provider/dns_zone2/named.rb | 15 | ||||
-rw-r--r-- | lib/puppet/type/dns_record2.rb | 5 | ||||
-rw-r--r-- | lib/puppet/type/dns_zone2.rb | 21 | ||||
-rw-r--r-- | manifests/zone.pp | 4 |
4 files changed, 15 insertions, 30 deletions
diff --git a/lib/puppet/provider/dns_zone2/named.rb b/lib/puppet/provider/dns_zone2/named.rb index d929322..c1e39c5 100644 --- a/lib/puppet/provider/dns_zone2/named.rb +++ b/lib/puppet/provider/dns_zone2/named.rb @@ -1,4 +1,5 @@ Puppet::Type.type(:dns_zone2).provide(:named) do + def self.instances `named-checkconf -l`.split("\n").map do |record| name, cls, view, type = record.split(' ') @@ -8,18 +9,12 @@ Puppet::Type.type(:dns_zone2).provide(:named) do def create(records) print("Create #{resource[:name]}\n") - write_zone records end def destroy print("Remove #{resource[:name]}\n") end - def refresh(records) - print("Refresh #{resource[:name]}\n") - write_zone records - end - def exists? # instances.find { |r| r.name == resource[:name] } # resource[:ensure] == :present @@ -38,7 +33,7 @@ Puppet::Type.type(:dns_zone2).provide(:named) do content = <<~EOF ; File managed by Puppet. ; Local changes WILL be overwritten - ; File last generated #{Time.now} + ; File last generated {Time.now} $ORIGIN #{resource[:origin]} $TTL #{resource[:default_ttl]} @@ -70,12 +65,6 @@ Puppet::Type.type(:dns_zone2).provide(:named) do content end - def write_zone(content) - File.open(filename, 'w') do |file| - file.write content - end - end - def serial `rndc zonestatus #{name} | awk -F' ' '/^serial:/ { print $2 }'`.to_i end diff --git a/lib/puppet/type/dns_record2.rb b/lib/puppet/type/dns_record2.rb index 98eaadb..1aceaf9 100644 --- a/lib/puppet/type/dns_record2.rb +++ b/lib/puppet/type/dns_record2.rb @@ -90,8 +90,7 @@ Puppet::Type.newtype(:dns_record2) do EOF end - # autobefore('dns::zone') { value(:zone) } - autonotify('dns_zone2') { [value(:zone)] } - # autobefore('dns_zone2') { [value(:zone)] } + autonotify(:dns_zone2) { || [value(:zone)] } + # TODO views end diff --git a/lib/puppet/type/dns_zone2.rb b/lib/puppet/type/dns_zone2.rb index 61fe8ce..ff0cf02 100644 --- a/lib/puppet/type/dns_zone2.rb +++ b/lib/puppet/type/dns_zone2.rb @@ -11,7 +11,9 @@ Puppet::Type.newtype(:dns_zone2, self_refresh: true) do newproperty(:ensure) do newvalue(:present) do - provider.write_zone(resource.should_content) + # @resource.content = resource.should_content + # provider.write_zone(resource.should_content) + print("Present resource\n") end # This should ideally remove the zone. This is however managed @@ -36,7 +38,8 @@ Puppet::Type.newtype(:dns_zone2, self_refresh: true) do end def refresh - provider.write_zone(should_content) + print("Refreshing zone\n") + catalog.resource("File[/var/named/zones/#{self[:name]}db]")[:content] = should_content end newparam(:origin, namevar: true) do @@ -115,26 +118,20 @@ Puppet::Type.newtype(:dns_zone2, self_refresh: true) do end # Create the file resource for us. - - # This prevents the directory purge on /var/named/zones from deleting us. def generate + print("Generate\n") params = { ensure: :present, path: provider.filename, + # notify: self[:notify], } + [Puppet::Type.type(:file).new(params)] end def should_content + print("Getting content\n") provider.zone_content(records) end - # def eval_generate - # content = should_content - # catalog.resource("File[/var/named/zones/#{self[:name]}db]")[:content] = content - # # provider.refresh (resource.records) - # [catalog.resource("File[/var/named/zones/#{self[:name]}db]")] - # end - - # autorequire(:file) {["/var/named/zones/#{self[:name]}db"]} end diff --git a/manifests/zone.pp b/manifests/zone.pp index c30becf..828b887 100644 --- a/manifests/zone.pp +++ b/manifests/zone.pp @@ -121,13 +121,13 @@ define dns::zone ( } } else { dns_zone2 { $zone: - * => $params, + notify => Exec["Dns::zone reload ${zone_}"], + * => $params, } exec { "Dns::zone reload ${zone_}": command => [$dns::rndc, 'reload', $zone_], refreshonly => true, - subscribe => Dns_zone2[$zone_], } } } |