class bind { class bind_base { package { 'bind': } service { 'named': restart => 'service named restart', subscribe => Package['bind'], } file { '/etc/named.conf': ensure => '/var/lib/named/etc/named.conf', require => Package['bind'], } exec { 'named_reload': command => 'service named reload', refreshonly => true, } file { '/var/lib/named/etc/named.conf': require => Package['bind'], content => '', notify => Service['named'], } } define zone_base($content = false) { if ! $content { $zone_content = template("bind/zones/$name.zone") } else { $zone_content = $content } file { "/var/lib/named/var/named/$zone_subdir/$name.zone": content => $zone_content, require => Package['bind'], notify => Exec['named_reload'] } } define zone_master($content = false) { $zone_subdir = 'master' zone_base { $name : content => $content } } define zone_reverse($content = false) { $zone_subdir = 'reverse' zone_base { $name : content => $content } } class bind_master inherits bind_base { Tld_redirections::Domain <<| |>> $managed_tlds = list_exported_ressources('Tld_redirections::Domain') File['/var/lib/named/etc/named.conf'] { content => template('bind/named_base.conf', 'bind/named_master.conf'), } } class bind_slave inherits bind_base { $managed_tlds = list_exported_ressources('Tld_redirections::Domain') File['/var/lib/named/etc/named.conf'] { content => template('bind/named_base.conf', 'bind/named_slave.conf'), } } }