Project

General

Profile

« Previous | Next » 

Revision d66778ce

Added by Michael Moll almost 9 years ago

Support FreeBSD

View differences:

manifests/init.pp
$option_static_route = undef,
$options = undef,
$authoritative = false,
$dhcp_root_group = $dhcp::params::root_group
) inherits dhcp::params {
# Incase people set interface instead of interfaces work around
......
$dhcp_interfaces = $interfaces
}
$package_provider = $::operatingsystem ? {
'darwin' => 'macports',
default => undef,
}
package { $packagename:
ensure => installed,
provider => $package_provider,
}
file { $dhcp_dir:
......
content => template('dhcp/redhat/sysconfig-dhcpd'),
}
}
/^(FreeBSD|DragonFly)$/: {
$interfaces_line = join($dhcp_interfaces, ' ')
augeas { 'set listen interfaces':
context => '/files/etc/rc.conf',
changes => "set dhcpd_ifaces '\"${interfaces_line}\"'",
before => Package[$packagename],
notify => Service[$servicename],
}
}
default: {
fail("Unsupported OS family ${::osfamily}")
}
}
concat { "${dhcp_dir}/dhcpd.conf":
owner => 'root',
group => 'root',
group => $dhcp_root_group,
mode => '0644',
require => Package[$packagename],
notify => Service[$servicename],
......
concat { "${dhcp_dir}/dhcpd.hosts":
owner => 'root',
group => 'root',
group => $dhcp_root_group,
mode => '0644',
require => Package[$packagename],
notify => Service[$servicename],
manifests/params.pp
$dnsdomain = [$::domain]
$dhcp_dir = $::osfamily ? {
'RedHat' => '/etc/dhcp',
'Debian' => '/etc/dhcp',
'darwin' => '/opt/local/etc/dhcp',
default => '/etc/dhcp',
}
case $::osfamily {
'Debian': {
$dhcp_dir = '/etc/dhcp'
$packagename = 'isc-dhcp-server'
$servicename = 'isc-dhcp-server'
$root_group = 'root'
}
$packagename = $::osfamily ? {
'RedHat' => 'dhcp',
'Debian' => 'isc-dhcp-server',
'darwin' => 'dhcp',
default => 'dhcp',
}
/^(FreeBSD|DragonFly)$/: {
$dhcp_dir = '/usr/local/etc'
$packagename = 'isc-dhcp42-server'
$servicename = 'isc-dhcpd'
$root_group = 'wheel'
}
$servicename = $::osfamily ? {
'RedHat' => 'dhcpd',
'Debian' => 'isc-dhcp-server',
'darwin' => 'org.macports.dhcpd',
default => 'dhcpd',
}
'RedHat': {
$dhcp_dir = '/etc/dhcp'
$packagename = 'dhcp'
$servicename = 'dhcpd'
$root_group = 'root'
}
default: {
fail("${::hostname}: This module does not support osfamily ${::osfamily}")
}
}
}
metadata.json
"operatingsystem": "Debian",
"operatingsystemrelease": [
"6",
"7"
"7",
"8"
]
},
{
......
"12.04",
"14.04"
]
},
{
"operatingsystem": "FreeBSD",
"operatingsystemrelease": [
"9",
"10"
]
},
{
"operatingsystem": "DragonFly",
"operatingsystemrelease": [
"3.6",
"3.8",
"4"
]
}
]
}
spec/classes/init_spec.rb
describe 'dhcp' do
context 'supported operating systems' do
['Debian', 'RedHat'].each do |osfamily|
['Debian', 'RedHat', 'FreeBSD'].each do |osfamily|
conf_path = (osfamily == 'FreeBSD') ? '/usr/local/etc' : '/etc/dhcp'
describe "dhcp class without any parameters on #{osfamily}" do
let(:params) do {
:interfaces => ['eth0'],
......
'option fqdn.rcode2 255;',
'option pxegrub code 150 = text ;',
'log-facility local7;',
'include "/etc/dhcp/dhcpd.hosts";',
"include \"#{conf_path}/dhcpd.hosts\";",
])
}
end
......
'next-server 10.0.0.5;',
'filename "mypxefilename";',
'log-facility local7;',
'include "/etc/dhcp/dhcpd.hosts";',
"include \"#{conf_path}/dhcpd.hosts\";",
])
}
end

Also available in: Unified diff