aboutsummaryrefslogtreecommitdiff
path: root/manifests/subnet.pp
diff options
context:
space:
mode:
Diffstat (limited to 'manifests/subnet.pp')
-rw-r--r--manifests/subnet.pp76
1 files changed, 76 insertions, 0 deletions
diff --git a/manifests/subnet.pp b/manifests/subnet.pp
new file mode 100644
index 0000000..c0f865b
--- /dev/null
+++ b/manifests/subnet.pp
@@ -0,0 +1,76 @@
+/*
+
+= Definition: dhcp::subnet
+Creates a subnet
+
+Arguments:
+ *$broadcast* : subnet broadcast (mandatory)
+ *$netmask* : subnet netmask (if not set, takes eth0 netmask)
+ *$routers* : subnet routers (array) (if not set, takes eth0 IP)
+ *$subnet_mask* : netmask sent to dhcp guests (if not set, takes $netmask, or netmask_eth0)
+ *$domain_name* : subnet domain name (if not set, takes server domain)
+ *$other_opts* : any other DHCPD option, as an array
+ *$is_shared* : whether it's part of a shared network or not. Default: false
+
+Example:
+
+node "dhcp.domain.ltd" {
+ $dhcpd_domain_name = 'domain.ltd'
+ $dhcpd_dns_servers = '10.27.21.1, 10.26.21.1'
+ include dhcp
+
+ dhcp::subnet {"10.27.20.0":
+ ensure => present,
+ broadcast => "10.27.20.255",
+ other_opts => ['filename "pxelinux.0";', 'next-server 10.27.10.1;'],
+ }
+}
+*/
+define dhcp::subnet(
+ $ensure=present,
+ $broadcast,
+ $netmask=false,
+ $routers=false,
+ $subnet_mask=false,
+ $domain_name=false,
+ $other_opts=false,
+ $is_shared=false) {
+ include dhcp::params
+
+ $to_include = "${dhcp::params::config_dir}/hosts.d/${name}.conf"
+
+ file {"${dhcp::params::config_dir}/subnets/${name}.conf":
+ ensure => $ensure,
+ owner => root,
+ group => root,
+ content => template("dhcp/subnet.conf.erb"),
+ notify => Service["dhcpd"],
+ }
+
+ if ! $is_shared {
+ common::concatfilepart {"dhcp.${name}":
+ file => "${dhcp::params::config_dir}/dhcpd.conf",
+ ensure => $ensure,
+ content => "include \"${dhcp::params::config_dir}/subnets/${name}.conf\";\n",
+ }
+ } else {
+ common::concatfilepart {"dhcp.${name}":
+ file => "${dhcp::params::config_dir}/dhcpd.conf",
+ ensure => absent,
+ content => "include \"${dhcp::params::config_dir}/subnets/${name}.conf\";\n",
+ }
+
+ }
+
+ common::concatfilepart {"subnet.${name}.hosts":
+ file => "${dhcp::params::config_dir}/dhcpd.conf",
+ ensure => $ensure,
+ content => "include \"${dhcp::params::config_dir}/hosts.d/${name}.conf\";\n",
+ }
+
+ common::concatfilepart {"00.dhcp.${name}.base":
+ file => $to_include,
+ ensure => $ensure,
+ content => "# File managed by puppet\n",
+ }
+}