From 61452bec75976590a0293870d410ed0d3c80f843 Mon Sep 17 00:00:00 2001 From: Marc Fournier Date: Tue, 15 Nov 2011 13:13:29 +0100 Subject: file renaming to be compliant with recommended module structure. --- manifests/a.pp | 27 +++++++++++ manifests/aaaa.pp | 28 ++++++++++++ manifests/base.pp | 32 +++++++++++++ manifests/classes/bind-base.pp | 32 ------------- manifests/classes/bind-debian.pp | 14 ------ manifests/classes/bind.pp | 54 ---------------------- manifests/cname.pp | 27 +++++++++++ manifests/debian.pp | 14 ++++++ manifests/definitions/bind-a.pp | 27 ----------- manifests/definitions/bind-aaaa.pp | 28 ------------ manifests/definitions/bind-cname.pp | 27 ----------- manifests/definitions/bind-mx.pp | 35 -------------- manifests/definitions/bind-ns.pp | 27 ----------- manifests/definitions/bind-record.pp | 35 -------------- manifests/definitions/bind-zone.pp | 88 ------------------------------------ manifests/init.pp | 56 ++++++++++++++++++++++- manifests/mx.pp | 35 ++++++++++++++ manifests/ns.pp | 27 +++++++++++ manifests/record.pp | 35 ++++++++++++++ manifests/zone.pp | 88 ++++++++++++++++++++++++++++++++++++ 20 files changed, 367 insertions(+), 369 deletions(-) create mode 100644 manifests/a.pp create mode 100644 manifests/aaaa.pp create mode 100644 manifests/base.pp delete mode 100644 manifests/classes/bind-base.pp delete mode 100644 manifests/classes/bind-debian.pp delete mode 100644 manifests/classes/bind.pp create mode 100644 manifests/cname.pp create mode 100644 manifests/debian.pp delete mode 100644 manifests/definitions/bind-a.pp delete mode 100644 manifests/definitions/bind-aaaa.pp delete mode 100644 manifests/definitions/bind-cname.pp delete mode 100644 manifests/definitions/bind-mx.pp delete mode 100644 manifests/definitions/bind-ns.pp delete mode 100644 manifests/definitions/bind-record.pp delete mode 100644 manifests/definitions/bind-zone.pp create mode 100644 manifests/mx.pp create mode 100644 manifests/ns.pp create mode 100644 manifests/record.pp create mode 100644 manifests/zone.pp diff --git a/manifests/a.pp b/manifests/a.pp new file mode 100644 index 0000000..3f30187 --- /dev/null +++ b/manifests/a.pp @@ -0,0 +1,27 @@ +/* + += Definition: bind::a +Creates an IPv4 record. + +Arguments: + *$zone*: Bind::Zone name + *$owner*: owner of the Resource Record + *$host*: target of the Resource Record + *$ttl*: Time to Live for the Resource Record. Optional. + +*/ +define bind::a($ensure=present, + $zone, + $owner=false, + $host, + $ttl=false) { + + bind::record {$name: + ensure => $ensure, + zone => $zone, + owner => $owner, + host => $host, + ttl => $ttl, + record_type => 'A', + } +} diff --git a/manifests/aaaa.pp b/manifests/aaaa.pp new file mode 100644 index 0000000..80291c2 --- /dev/null +++ b/manifests/aaaa.pp @@ -0,0 +1,28 @@ +/* + += Definition: bind::aaaa +Creates an IPv6 AAAA record. + +Arguments: + *$zone*: Bind::Zone name + *$owner*: owner of the Resource Record + *$host*: target of the Resource Record + *$ttl*: Time to Live for the Resource Record. Optional. + +*/ +define bind::aaaa($ensure=present, + $zone, + $owner=false, + $host, + $ttl=false) { + + bind::record {$name: + ensure => $ensure, + zone => $zone, + owner => $owner, + host => $host, + ttl => $ttl, + record_type => 'AAAA', + } + +} diff --git a/manifests/base.pp b/manifests/base.pp new file mode 100644 index 0000000..c442085 --- /dev/null +++ b/manifests/base.pp @@ -0,0 +1,32 @@ +/* + += Class: bind::base + +Declares some basic resources. +You should NOT include this class as is, as it won't work at all! +Please refer to Class["bind"]. + +*/ +class bind::base { + package {"bind9": + ensure => present, + } + + service {"bind9": + ensure => running, + enable => true, + require => Package["bind9"], + } + + file {["/etc/bind/pri", "/etc/bind/zones"]: + ensure => directory, + owner => root, + group => root, + mode => 0755, + require => Package["bind9"], + purge => true, + force => true, + recurse => true, + source => "puppet:///modules/bind/empty", + } +} diff --git a/manifests/classes/bind-base.pp b/manifests/classes/bind-base.pp deleted file mode 100644 index c442085..0000000 --- a/manifests/classes/bind-base.pp +++ /dev/null @@ -1,32 +0,0 @@ -/* - -= Class: bind::base - -Declares some basic resources. -You should NOT include this class as is, as it won't work at all! -Please refer to Class["bind"]. - -*/ -class bind::base { - package {"bind9": - ensure => present, - } - - service {"bind9": - ensure => running, - enable => true, - require => Package["bind9"], - } - - file {["/etc/bind/pri", "/etc/bind/zones"]: - ensure => directory, - owner => root, - group => root, - mode => 0755, - require => Package["bind9"], - purge => true, - force => true, - recurse => true, - source => "puppet:///modules/bind/empty", - } -} diff --git a/manifests/classes/bind-debian.pp b/manifests/classes/bind-debian.pp deleted file mode 100644 index 7b752ae..0000000 --- a/manifests/classes/bind-debian.pp +++ /dev/null @@ -1,14 +0,0 @@ -/* - -= Class: bind::debian -Special debian class - inherits from bind::base - -You should not include this class - please refer to Class["bind"] - -*/ -class bind::debian inherits bind::base { - Service["bind9"] { - pattern => "/usr/sbin/named", - restart => "/etc/init.d/bind9 reload", - } -} diff --git a/manifests/classes/bind.pp b/manifests/classes/bind.pp deleted file mode 100644 index d9af708..0000000 --- a/manifests/classes/bind.pp +++ /dev/null @@ -1,54 +0,0 @@ -/* - -= Class: bind -Include this class to install bind9 server on your node. - -Requires: -- module common (git://github.com/camptocamp/puppet-common.git) - -Bind documentation: -http://www.bind9.net/manuals - -Limitations: -This modules is valid for Bind 9.7.1 (squeeze version). -For 9.7.2, it will be really limited (no view nor ACL support). - - -Example: - -node "ns1.domain.ltd" { - include bind - bind::zone {"domain.ltd": - ensure => present, - zone_contact => "contact.domain.ltd", - zone_ns => $fqdn, - zone_serial => "2010110804", - zone_ttl => "604800", - } - - bind::a {"ns $fqdn": - zone => "domain.ltd", - owner => "${fqdn}.", - host => $ipaddress, - } - - bind::a {"mail.domain.ltd": - zone => "domain.ltd", - owner => "mail", - host => "6.6.6.6", - } - - bind::mx {"mx1": - zone => "domain.ltd", - owner => "@", - priority => 1, - host => "mail.domain.ltd", - } -} -*/ -class bind { - case $operatingsystem { - "Debian","Ubuntu": { include bind::debian } - default: { fail "Unknown $operatingsystem" } - } -} diff --git a/manifests/cname.pp b/manifests/cname.pp new file mode 100644 index 0000000..c8baeec --- /dev/null +++ b/manifests/cname.pp @@ -0,0 +1,27 @@ +/* + += Definition: bind::cname +Creates a CNAME record. + +Arguments: + *$zone*: Bind::Zone name + *$owner*: owner of the Resource Record + *$host*: target of the Resource Record + *$ttl*: Time to Live for the Resource Record. Optional. + +*/ +define bind::cname($ensure=present, + $zone, + $owner=false, + $host, + $ttl=false) { + + bind::record {$name: + ensure => $ensure, + zone => $zone, + owner => $owner, + host => $host, + ttl => $ttl, + record_type => 'CNAME', + } +} diff --git a/manifests/debian.pp b/manifests/debian.pp new file mode 100644 index 0000000..7b752ae --- /dev/null +++ b/manifests/debian.pp @@ -0,0 +1,14 @@ +/* + += Class: bind::debian +Special debian class - inherits from bind::base + +You should not include this class - please refer to Class["bind"] + +*/ +class bind::debian inherits bind::base { + Service["bind9"] { + pattern => "/usr/sbin/named", + restart => "/etc/init.d/bind9 reload", + } +} diff --git a/manifests/definitions/bind-a.pp b/manifests/definitions/bind-a.pp deleted file mode 100644 index 3f30187..0000000 --- a/manifests/definitions/bind-a.pp +++ /dev/null @@ -1,27 +0,0 @@ -/* - -= Definition: bind::a -Creates an IPv4 record. - -Arguments: - *$zone*: Bind::Zone name - *$owner*: owner of the Resource Record - *$host*: target of the Resource Record - *$ttl*: Time to Live for the Resource Record. Optional. - -*/ -define bind::a($ensure=present, - $zone, - $owner=false, - $host, - $ttl=false) { - - bind::record {$name: - ensure => $ensure, - zone => $zone, - owner => $owner, - host => $host, - ttl => $ttl, - record_type => 'A', - } -} diff --git a/manifests/definitions/bind-aaaa.pp b/manifests/definitions/bind-aaaa.pp deleted file mode 100644 index 80291c2..0000000 --- a/manifests/definitions/bind-aaaa.pp +++ /dev/null @@ -1,28 +0,0 @@ -/* - -= Definition: bind::aaaa -Creates an IPv6 AAAA record. - -Arguments: - *$zone*: Bind::Zone name - *$owner*: owner of the Resource Record - *$host*: target of the Resource Record - *$ttl*: Time to Live for the Resource Record. Optional. - -*/ -define bind::aaaa($ensure=present, - $zone, - $owner=false, - $host, - $ttl=false) { - - bind::record {$name: - ensure => $ensure, - zone => $zone, - owner => $owner, - host => $host, - ttl => $ttl, - record_type => 'AAAA', - } - -} diff --git a/manifests/definitions/bind-cname.pp b/manifests/definitions/bind-cname.pp deleted file mode 100644 index c8baeec..0000000 --- a/manifests/definitions/bind-cname.pp +++ /dev/null @@ -1,27 +0,0 @@ -/* - -= Definition: bind::cname -Creates a CNAME record. - -Arguments: - *$zone*: Bind::Zone name - *$owner*: owner of the Resource Record - *$host*: target of the Resource Record - *$ttl*: Time to Live for the Resource Record. Optional. - -*/ -define bind::cname($ensure=present, - $zone, - $owner=false, - $host, - $ttl=false) { - - bind::record {$name: - ensure => $ensure, - zone => $zone, - owner => $owner, - host => $host, - ttl => $ttl, - record_type => 'CNAME', - } -} diff --git a/manifests/definitions/bind-mx.pp b/manifests/definitions/bind-mx.pp deleted file mode 100644 index 84a2b9f..0000000 --- a/manifests/definitions/bind-mx.pp +++ /dev/null @@ -1,35 +0,0 @@ -/* - -= Definition: bind::mx -Creates an MX record. - -Arguments: - *$zone*: Bind::Zone name - *$owner*: owner of the Resource Record - *$priority*: MX record priority - *$host*: target of the Resource Record - *$ttl*: Time to Live for the Resource Record. Optional. - -*/ -define bind::mx($ensure=present, - $zone, - $owner=false, - $priority, - $host, - $ttl=false) { - - if $owner { - $_owner = $owner - } else { - $_owner = $name - } - - common::concatfilepart{"bind.${name}": - file => "/etc/bind/pri/${zone}", - ensure => $ensure, - notify => Service["bind9"], - content => template("bind/mx-record.erb"), - require => [Bind::Zone[$zone], Bind::A[$host]], - } -} - diff --git a/manifests/definitions/bind-ns.pp b/manifests/definitions/bind-ns.pp deleted file mode 100644 index 3d07aea..0000000 --- a/manifests/definitions/bind-ns.pp +++ /dev/null @@ -1,27 +0,0 @@ -/* - -= Definition: bind::ns -Creates an NS record. - -Arguments: - *$zone*: Bind::Zone name - *$owner*: owner of the Resource Record - *$host*: target of the Resource Record - *$ttl*: Time to Live for the Resource Record. Optional. - -*/ -define bind::ns($ensure=present, - $zone, - $owner=false, - $host, - $ttl=false) { - - bind::record {$name: - ensure => $ensure, - zone => $zone, - owner => $owner, - host => $host, - ttl => $ttl, - record_type => 'NS', - } -} diff --git a/manifests/definitions/bind-record.pp b/manifests/definitions/bind-record.pp deleted file mode 100644 index d551d60..0000000 --- a/manifests/definitions/bind-record.pp +++ /dev/null @@ -1,35 +0,0 @@ -/* - -= Definition: bind::record -Helper to create any record you want (but NOT MX, please refer to Bind::Mx) - -Arguments: - *$zone*: Bind::Zone name - *$owner*: owner of the Resource Record - *$host*: target of the Resource Record - *$record_type°: resource record type - *$record_class*: resource record class. Default "IN". - *$ttl*: Time to Live for the Resource Record. Optional. - -*/ -define bind::record($ensure=present, - $zone, - $owner=false, - $host, - $record_type, - $record_class='IN', - $ttl=false) { - - if $owner { - $_owner = $owner - } else { - $_owner = $name - } - - common::concatfilepart {"${zone}.${record_type}.${name}": - ensure => $ensure, - file => "/etc/bind/pri/${zone}.conf", - content => template("bind/default-record.erb"), - notify => Service["bind9"], - } -} diff --git a/manifests/definitions/bind-zone.pp b/manifests/definitions/bind-zone.pp deleted file mode 100644 index 64da5da..0000000 --- a/manifests/definitions/bind-zone.pp +++ /dev/null @@ -1,88 +0,0 @@ -/* - -= Definition: bind::zone -Creates a valid Bind9 zone. - -Arguments: - *$is_slave*: Boolean. Is your zone a slave or a master? Default false - *$zone_ttl*: Time period. Time to live for your zonefile (master only) - *$zone_contact*: Valid contact record (master only) - *$zone_serial*: Integer. Zone serial (master only) - *$zone_refresh*: Time period. Time between each slave refresh (master only) - *$zone_retry*: Time period. Time between each slave retry (master only) - *$zone_expiracy*: Time period. Slave expiracy time (master only) - *$zone_ns*: Valid NS for this zone (master only) - *$zone_xfers*: IPs. Valid xfers for zone (master only) - *$zone_masters*: IPs. Valid master for this zone (slave only) - -*/ -define bind::zone($ensure=present, - $is_slave=false, - $zone_ttl=false, - $zone_contact=false, - $zone_serial=false, - $zone_refresh="3h", - $zone_retry="1h", - $zone_expiracy="1w", - $zone_ns=false, - $zone_xfers=false, - $zone_masters=false) { - - common::concatfilepart {"bind.zones.${name}": - ensure => $ensure, - notify => Service["bind9"], - file => "/etc/bind/zones/${name}.conf", - require => Package["bind9"], - } - - common::concatfilepart {"named.local.zone.${name}": - ensure => $ensure, - notify => Service["bind9"], - file => "/etc/bind/named.conf.local", - content => "include \"/etc/bind/zones/${name}.conf\";\n", - require => Package["bind9"], - } - - if $is_slave { - if !$zone_masters { - fail "No master defined for ${name}!" - } - Common::Concatfilepart["bind.zones.${name}"] { - content => template("bind/zone-slave.erb"), - } -## END of slave - } else { - if !$zone_contact { - fail "No contact defined for ${name}!" - } - if !$zone_ns { - fail "No ns defined for ${name}!" - } - if !$zone_serial { - fail "No serial defined for ${name}!" - } - if !$zone_ttl { - fail "No ttl defined for ${name}!" - } - - Common::Concatfilepart["bind.zones.${name}"] { - content => template("bind/zone-master.erb"), - } - - common::concatfilepart {"bind.00.${name}": - ensure => $ensure, - file => "/etc/bind/pri/${name}.conf", - content => template("bind/zone-header.erb"), - require => Package["bind9"], - } - - file {"/etc/bind/pri/${name}.conf.d": - ensure => directory, - mode => 0700, - purge => true, - recurse => true, - backup => false, - force => true, - } - } -} diff --git a/manifests/init.pp b/manifests/init.pp index 6cc1969..d9af708 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -1,2 +1,54 @@ -import "classes/*.pp" -import "definitions/*.pp" +/* + += Class: bind +Include this class to install bind9 server on your node. + +Requires: +- module common (git://github.com/camptocamp/puppet-common.git) + +Bind documentation: +http://www.bind9.net/manuals + +Limitations: +This modules is valid for Bind 9.7.1 (squeeze version). +For 9.7.2, it will be really limited (no view nor ACL support). + + +Example: + +node "ns1.domain.ltd" { + include bind + bind::zone {"domain.ltd": + ensure => present, + zone_contact => "contact.domain.ltd", + zone_ns => $fqdn, + zone_serial => "2010110804", + zone_ttl => "604800", + } + + bind::a {"ns $fqdn": + zone => "domain.ltd", + owner => "${fqdn}.", + host => $ipaddress, + } + + bind::a {"mail.domain.ltd": + zone => "domain.ltd", + owner => "mail", + host => "6.6.6.6", + } + + bind::mx {"mx1": + zone => "domain.ltd", + owner => "@", + priority => 1, + host => "mail.domain.ltd", + } +} +*/ +class bind { + case $operatingsystem { + "Debian","Ubuntu": { include bind::debian } + default: { fail "Unknown $operatingsystem" } + } +} diff --git a/manifests/mx.pp b/manifests/mx.pp new file mode 100644 index 0000000..84a2b9f --- /dev/null +++ b/manifests/mx.pp @@ -0,0 +1,35 @@ +/* + += Definition: bind::mx +Creates an MX record. + +Arguments: + *$zone*: Bind::Zone name + *$owner*: owner of the Resource Record + *$priority*: MX record priority + *$host*: target of the Resource Record + *$ttl*: Time to Live for the Resource Record. Optional. + +*/ +define bind::mx($ensure=present, + $zone, + $owner=false, + $priority, + $host, + $ttl=false) { + + if $owner { + $_owner = $owner + } else { + $_owner = $name + } + + common::concatfilepart{"bind.${name}": + file => "/etc/bind/pri/${zone}", + ensure => $ensure, + notify => Service["bind9"], + content => template("bind/mx-record.erb"), + require => [Bind::Zone[$zone], Bind::A[$host]], + } +} + diff --git a/manifests/ns.pp b/manifests/ns.pp new file mode 100644 index 0000000..3d07aea --- /dev/null +++ b/manifests/ns.pp @@ -0,0 +1,27 @@ +/* + += Definition: bind::ns +Creates an NS record. + +Arguments: + *$zone*: Bind::Zone name + *$owner*: owner of the Resource Record + *$host*: target of the Resource Record + *$ttl*: Time to Live for the Resource Record. Optional. + +*/ +define bind::ns($ensure=present, + $zone, + $owner=false, + $host, + $ttl=false) { + + bind::record {$name: + ensure => $ensure, + zone => $zone, + owner => $owner, + host => $host, + ttl => $ttl, + record_type => 'NS', + } +} diff --git a/manifests/record.pp b/manifests/record.pp new file mode 100644 index 0000000..d551d60 --- /dev/null +++ b/manifests/record.pp @@ -0,0 +1,35 @@ +/* + += Definition: bind::record +Helper to create any record you want (but NOT MX, please refer to Bind::Mx) + +Arguments: + *$zone*: Bind::Zone name + *$owner*: owner of the Resource Record + *$host*: target of the Resource Record + *$record_type°: resource record type + *$record_class*: resource record class. Default "IN". + *$ttl*: Time to Live for the Resource Record. Optional. + +*/ +define bind::record($ensure=present, + $zone, + $owner=false, + $host, + $record_type, + $record_class='IN', + $ttl=false) { + + if $owner { + $_owner = $owner + } else { + $_owner = $name + } + + common::concatfilepart {"${zone}.${record_type}.${name}": + ensure => $ensure, + file => "/etc/bind/pri/${zone}.conf", + content => template("bind/default-record.erb"), + notify => Service["bind9"], + } +} diff --git a/manifests/zone.pp b/manifests/zone.pp new file mode 100644 index 0000000..64da5da --- /dev/null +++ b/manifests/zone.pp @@ -0,0 +1,88 @@ +/* + += Definition: bind::zone +Creates a valid Bind9 zone. + +Arguments: + *$is_slave*: Boolean. Is your zone a slave or a master? Default false + *$zone_ttl*: Time period. Time to live for your zonefile (master only) + *$zone_contact*: Valid contact record (master only) + *$zone_serial*: Integer. Zone serial (master only) + *$zone_refresh*: Time period. Time between each slave refresh (master only) + *$zone_retry*: Time period. Time between each slave retry (master only) + *$zone_expiracy*: Time period. Slave expiracy time (master only) + *$zone_ns*: Valid NS for this zone (master only) + *$zone_xfers*: IPs. Valid xfers for zone (master only) + *$zone_masters*: IPs. Valid master for this zone (slave only) + +*/ +define bind::zone($ensure=present, + $is_slave=false, + $zone_ttl=false, + $zone_contact=false, + $zone_serial=false, + $zone_refresh="3h", + $zone_retry="1h", + $zone_expiracy="1w", + $zone_ns=false, + $zone_xfers=false, + $zone_masters=false) { + + common::concatfilepart {"bind.zones.${name}": + ensure => $ensure, + notify => Service["bind9"], + file => "/etc/bind/zones/${name}.conf", + require => Package["bind9"], + } + + common::concatfilepart {"named.local.zone.${name}": + ensure => $ensure, + notify => Service["bind9"], + file => "/etc/bind/named.conf.local", + content => "include \"/etc/bind/zones/${name}.conf\";\n", + require => Package["bind9"], + } + + if $is_slave { + if !$zone_masters { + fail "No master defined for ${name}!" + } + Common::Concatfilepart["bind.zones.${name}"] { + content => template("bind/zone-slave.erb"), + } +## END of slave + } else { + if !$zone_contact { + fail "No contact defined for ${name}!" + } + if !$zone_ns { + fail "No ns defined for ${name}!" + } + if !$zone_serial { + fail "No serial defined for ${name}!" + } + if !$zone_ttl { + fail "No ttl defined for ${name}!" + } + + Common::Concatfilepart["bind.zones.${name}"] { + content => template("bind/zone-master.erb"), + } + + common::concatfilepart {"bind.00.${name}": + ensure => $ensure, + file => "/etc/bind/pri/${name}.conf", + content => template("bind/zone-header.erb"), + require => Package["bind9"], + } + + file {"/etc/bind/pri/${name}.conf.d": + ensure => directory, + mode => 0700, + purge => true, + recurse => true, + backup => false, + force => true, + } + } +} -- cgit v1.2.3