Revision bc84f709
Added by Ewoud Kohl van Wijngaarden almost 10 years ago
manifests/init.pp | ||
---|---|---|
class dhcp (
|
||
$dnsdomain,
|
||
$nameservers,
|
||
$interfaces = undef,
|
||
$interface = 'NOTSET',
|
||
$dnskeyname = 'rndc-key',
|
||
$dnsupdatekey = undef,
|
||
$pxeserver = undef,
|
||
$pxefilename = undef,
|
||
$logfacility = 'local7',
|
||
$dhcp_monitor = true
|
||
) {
|
||
|
||
include dhcp::params
|
||
|
||
$dhcp_dir = $dhcp::params::dhcp_dir
|
||
$packagename = $dhcp::params::packagename
|
||
$servicename = $dhcp::params::servicename
|
||
$dnsdomain = $dhcp::params::dnsdomain,
|
||
$nameservers = ['8.8.8.8', '8.8.4.4'],
|
||
$interfaces = undef,
|
||
$interface = 'NOTSET',
|
||
$dnskeyname = 'rndc-key',
|
||
$dnsupdatekey = undef,
|
||
$pxeserver = undef,
|
||
$pxefilename = undef,
|
||
$logfacility = 'local7',
|
||
$dhcp_monitor = true,
|
||
$dhcp_dir = $dhcp::params::dhcp_dir,
|
||
$packagename = $dhcp::params::packagename,
|
||
$servicename = $dhcp::params::servicename,
|
||
) inherits dhcp::params {
|
||
|
||
# Incase people set interface instead of interfaces work around
|
||
# that. If they set both, use interfaces and the user is a unwise
|
||
... | ... | |
$dhcp_interfaces = $interfaces
|
||
}
|
||
|
||
package {
|
||
$packagename:
|
||
ensure => installed,
|
||
provider => $::operatingsystem ? {
|
||
default => undef,
|
||
darwin => macports
|
||
}
|
||
$package_provider = $::operatingsystem ? {
|
||
darwin => 'macports',
|
||
default => undef,
|
||
}
|
||
|
||
file {
|
||
$dhcp_dir:
|
||
mode => '0755',
|
||
require => Package[$packagename],
|
||
package { $packagename:
|
||
ensure => installed,
|
||
provider => $package_provider,
|
||
}
|
||
|
||
file { $dhcp_dir:
|
||
mode => '0755',
|
||
require => Package[$packagename],
|
||
}
|
||
|
||
# Only debian and ubuntu have this style of defaults for startup.
|
||
case $::operatingsystem {
|
||
'debian','ubuntu': {
|
||
case $::osfamily {
|
||
'Debian': {
|
||
file{ '/etc/default/isc-dhcp-server':
|
||
ensure => present,
|
||
owner => 'root',
|
||
... | ... | |
content => template('dhcp/debian/default_isc-dhcp-server'),
|
||
}
|
||
}
|
||
'redhat','centos','fedora','Scientific': {
|
||
'RedHat': {
|
||
file{ '/etc/sysconfig/dhcpd':
|
||
ensure => present,
|
||
owner => 'root',
|
||
... | ... | |
content => template('dhcp/redhat/sysconfig-dhcpd'),
|
||
}
|
||
}
|
||
default: {
|
||
fail("Unsupported OS family ${::osfamily}")
|
||
}
|
||
}
|
||
|
||
concat_build { 'dhcp.conf':
|
||
... | ... | |
content => "# static DHCP hosts\n",
|
||
}
|
||
|
||
service {
|
||
$servicename:
|
||
ensure => running,
|
||
enable => true,
|
||
hasstatus => true,
|
||
subscribe => File["${dhcp_dir}/dhcpd.hosts", "${dhcp_dir}/dhcpd.conf"],
|
||
require => Package[$packagename],
|
||
service { $servicename:
|
||
ensure => running,
|
||
enable => true,
|
||
hasstatus => true,
|
||
subscribe => File["${dhcp_dir}/dhcpd.hosts", "${dhcp_dir}/dhcpd.conf"],
|
||
require => Package[$packagename],
|
||
}
|
||
|
||
}
|
manifests/params.pp | ||
---|---|---|
class dhcp::params {
|
||
|
||
$dhcp_dir = $::operatingsystem ? {
|
||
/(redhat|centos|fedora|Scientific)/ => '/etc/dhcp',
|
||
/(Ubuntu|Debian)/ => '/etc/dhcp',
|
||
darwin => '/opt/local/etc/dhcp',
|
||
default => '/etc/dhcp',
|
||
$dnsdomain = [$::domain]
|
||
|
||
$dhcp_dir = $::osfamily ? {
|
||
'RedHat' => '/etc/dhcp',
|
||
'Debian' => '/etc/dhcp',
|
||
'darwin' => '/opt/local/etc/dhcp',
|
||
default => '/etc/dhcp',
|
||
}
|
||
|
||
$packagename = $::operatingsystem ? {
|
||
/(redhat|centos|fedora|Scientific)/ => 'dhcp',
|
||
/(Ubuntu|Debian)/ => 'isc-dhcp-server',
|
||
darwin => 'dhcp',
|
||
default => 'dhcp',
|
||
$packagename = $::osfamily ? {
|
||
'RedHat' => 'dhcp',
|
||
'Debian' => 'isc-dhcp-server',
|
||
'darwin' => 'dhcp',
|
||
default => 'dhcp',
|
||
}
|
||
|
||
$servicename = $::operatingsystem ? {
|
||
/(redhat|centos|fedora|Scientific)/ => 'dhcpd',
|
||
/(Ubuntu|Debian)/ => 'isc-dhcp-server',
|
||
darwin => 'org.macports.dhcpd',
|
||
default => 'dhcpd',
|
||
$servicename = $::osfamily ? {
|
||
'RedHat' => 'dhcpd',
|
||
'Debian' => 'isc-dhcp-server',
|
||
'darwin' => 'org.macports.dhcpd',
|
||
default => 'dhcpd',
|
||
}
|
||
|
||
}
|
tests/init.pp | ||
---|---|---|
],
|
||
nameservers => ['10.1.1.10'],
|
||
interfaces => ['eth0'],
|
||
dnsupdatekey => "/etc/bind/keys.d/$::ddnskeyname",
|
||
dnsupdatekey => "/etc/bind/keys.d/${::ddnskeyname}",
|
||
require => Bind::Key[$::ddnskeyname],
|
||
pxeserver => '10.1.1.5',
|
||
pxefilename => 'pxelinux.0',
|
Also available in: Unified diff
puppet-lint clean