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',
}
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'],
}
}
|