Puppet Class: dhcpd

Defined in:
manifests/init.pp

Overview

Class: dhcpd

Installs and enables a dhcpd server. You must specify either ‘$configsource` or `$configcontent`.

Parameters:

$configsource:
  Puppet location of the configuration file to use. Default: none
$configcontent:
  Content of the configuration file to use. Default: none
$dhcpdargs:
  Command-line arguments to be added to dhcpd. Default: empty
$ensure:
  Ensure parameter for the service. Default: undefined
$enable:
  Enable parameter for the service. Default: true

Sample Usage :

class { 'dhcpd':
  configsource => 'puppet:///files/dhcpd.conf-foo',
  # Restrict listening to a single interface
  dhcpdargs    => 'eth1',
  # Default is to enable but allow to be stopped (for active/passive)
  ensure       => 'running',
}

Parameters:

  • configsource (Any) (defaults to: undef)
  • configcontent (Any) (defaults to: undef)
  • dhcpdargs (Any) (defaults to: '')
  • ensure (Any) (defaults to: undef)
  • enable (Any) (defaults to: true)


27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'manifests/init.pp', line 27

class dhcpd (
  $configsource  = undef,
  $configcontent = undef,
  $dhcpdargs     = '',
  $ensure        = undef,
  $enable        = true,
) {

  if $facts['os']['family'] == 'RedHat' and versioncmp($facts['os']['release']['major'], '8') >= 0 {
    $package = 'dhcp-server'
  } else {
    $package = 'dhcp'
  }

  package { $package:
    ensure => 'installed',
    alias  => 'dhcp',
  }

  service { 'dhcpd':
    ensure    => $ensure,
    enable    => $enable,
    hasstatus => true,
    require   => Package['dhcp'],
  }

  file { '/etc/sysconfig/dhcpd':
    owner   => 'root',
    group   => 'root',
    mode    => '0644',
    content => template('dhcpd/dhcpd.sysconfig.erb'),
    notify  => Service['dhcpd'],
  }

  # RHEL 5 has a different location
  if versioncmp($facts['os']['release']['major'], '6') < 0 {
    $dhcpd_conf = '/etc/dhcpd.conf'
  } else {
    $dhcpd_conf = '/etc/dhcp/dhcpd.conf'
  }
  file { $dhcpd_conf :
    owner        => 'root',
    group        => 'root',
    mode         => '0644',
    source       => $configsource,
    content      => $configcontent,
    require      => Package['dhcp'],
    validate_cmd => '/usr/sbin/dhcpd -t -cf %',
    notify       => Service['dhcpd'],
  }

}