+/*
+
+= 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,
+/*
+
+= 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",
+/*
+
+= Class: bind
+Include this class to install bind9 server on your node.
+
+Requires:
+- module common (git://github.com/camptocamp/puppet-common.git)
+
+Example:
+
+node "ns1.domain.ltd" {
+ include bind
+
+= 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": { include bind::debian }
+/*
+
+= 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,
+/*
+
+= Definition: bind::aaaa
+Creates an IPv6 AAA 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,
+/*
+
+= 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,
+/*
+
+= 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,
ensure => $ensure,
notify => Service["bind9"],
content => template("bind/mx-record.erb"),
- require => Bind::Zone[$zone],
+ require => [Bind::Zone[$zone], Bind::A[$host]],
}
}
+/*
+
+= Definition: bind::mx
+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,
+/*
+
+= 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,
+/*
+
+= 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,