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"), } } }