Version information
This version is compatible with:
- Puppet Enterprise 2023.8.x, 2023.7.x, 2023.6.x, 2023.5.x, 2023.4.x, 2023.3.x, 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x
- Puppet >= 7.0.0 < 9.0.0
- Archlinux, , , , , , ,
Start using this module
Add this module to your Puppetfile:
mod 'puppet-dhcp', '6.1.0'
Learn more about managing modules with a PuppetfileDocumentation
DHCP module for Puppet
Overview
Installs and manages a DHCP server.
Features
- Multiple subnet support
- Host reservations
- Secure dynamic DNS updates when combined with Bind
- Can create a dummy (ignored) subnet so that the server can be used only as a helper-address target
Usage
Define the server and the zones it will be responsible for.
class { 'dhcp':
service_ensure => running,
dnsdomain => [
'dc1.example.net',
'1.0.10.in-addr.arpa',
],
nameservers => ['10.0.1.20'],
ntpservers => ['us.pool.ntp.org'],
interfaces => ['eth0'],
dnsupdatekey => '/etc/bind/keys.d/rndc.key',
dnskeyname => 'rndc-key',
require => Bind::Key['rndc-key'],
pxeserver => '10.0.1.50',
pxefilename => 'pxelinux.0',
omapi_port => 7911,
}
dhcp::pool
Define the pool attributes. This example will create a pool, which serves IPs of two different ranges in the same network.
May be passed as a hash into the DHCP class.
dhcp::pool{ 'ops.dc1.example.net':
network => '10.0.1.0',
mask => '255.255.255.0',
range => ['10.0.1.10 10.0.1.100', '10.0.1.200 10.0.1.250' ],
gateway => '10.0.1.1',
}
dhcp::ignoredsubnet
Define a subnet that will be ignored - useful for making the DHCP server only respond to requests forwarded by switches etc.
May be passed as a hash into the DHCP class.
dhcp::ignoredsubnet{ 'eth0':
network => '10.0.0.0',
mask => '255.255.255.0',
}
dhcp::host
Create host reservations.
May be passed as a hash into the DHCP class.
dhcp::host { 'server1':
comment => 'Optional descriptive comment',
mac => '00:50:56:00:00:01',
ip => '10.0.1.51',
# Optionally override subnet/global settings for some hosts.
default_lease_time => 600,
max_lease_time => 900,
# Optionally declare event statements in any combination.
on_commit => [
'set ClientIP = binary-to-ascii(10, 8, ".", leased-address)',
'execute("/usr/local/bin/my_dhcp_helper.sh", ClientIP)'
],
on_release => [
'set ClientIP = binary-to-ascii(10, 8, ".", leased-address)',
'log(concat("Released IP: ", ClientIP))'
],
on_expiry => [
'set ClientIP = binary-to-ascii(10, 8, ".", leased-address)',
'log(concat("Expired IP: ", ClientIP))'
]
}
parameters
Parameters are available to configure pxe or ipxe
Boot ipxe from pxe. When configured this overrides pxefilename. For more information see ipxe.org.
class { 'dhcp':
ipxe_filename => 'undionly.kpxe',
ipxe_bootstrap => 'bootstrap.kpxe',
pxeserver => '10.0.1.50',
}
The following is the list of all parameters available for this class.
Parameter | Data Type | Default Value |
---|---|---|
authoritative |
Boolean | true |
ddns_update_static |
String | 'on' |
ddns_update_style |
String | 'interim' |
ddns_update_optimize |
String | 'on' |
default_lease_time |
Integer | 43200 |
dhcp_conf_ddns |
String | 'INTERNAL_TEMPLATE' |
dhcp_conf_extra |
String | 'INTERNAL_TEMPLATE' |
dhcp_conf_fragments |
Hash | {} |
dhcp_conf_header |
String | 'INTERNAL_TEMPLATE' |
dhcp_conf_ntp |
String | 'INTERNAL_TEMPLATE' |
dhcp_conf_pxe |
String | 'INTERNAL_TEMPLATE' |
dhcp_dir |
String | $dhcp::params::dhcp_dir |
dhcpd_conf_filename |
String | 'dhcpd.conf' |
dnsdomain |
Array | undef |
dnskeyname |
String | undef |
dnssearchdomains |
Array | [] |
dnsupdatekey |
String | undef |
extra_config |
String | '' |
globaloptions |
String | '' |
interface |
String | 'NOTSET' |
interfaces |
Array | undef |
ipxe_bootstrap |
String | undef |
ipxe_filename |
String | undef |
ldap_base_dn |
String | 'dc=example, dc=com' |
ldap_debug_file |
String | undef |
ldap_method |
String | 'dynamic' |
ldap_password |
String | '' |
ldap_port |
Integer | 389 |
ldap_server |
String | 'localhost' |
ldap_username |
String | 'cn=root, dc=example, dc=com' |
logfacility |
String | 'daemon' |
manage_service |
Boolean | true |
max_lease_time |
Integer | 86400 |
mtu |
Integer | undef |
nameservers |
Array | [] |
nameservers_ipv6 |
Array | [] |
ntpservers |
Array | [] |
omapi_algorithm |
String | HMAC-MD5 |
omapi_key |
String | undef |
omapi_name |
String | undef |
omapi_port |
Integer | undef |
option_code150_label |
String | pxegrub |
option_code150_value |
String | text |
package_provider |
String | $dhcp::params::package_provider |
packagename |
String | $dhcp::params::packagename |
manage_package |
Boolean | true |
pxefilename |
String | undef |
pxeserver |
String | undef |
service_ensure |
Enum | running |
servicename |
String | $dhcp::params::servicename |
use_ldap |
Boolean | false |
dhcp_classes |
Hash | {} |
hosts |
Hash | {} |
ignoredsubnets |
Hash | {} |
pools |
Hash | {} |
pools6 |
Hash | {} |
Contributors
Zach Leslie zach.leslie@gmail.com Ben Hughes git@mumble.org.uk Sam Dunster sdunster@uow.edu.au Garrett Honeycutt gh@learnpuppet.com Matt Kirby mk.kirby@gmail.com
Reference
Table of Contents
Classes
Public Classes
dhcp
: Manage an ISC DHCP serverdhcp::disable
: Remove and Disable the DHCP serverdhcp::failover
: Manage a DHCP failover config
Private Classes
dhcp::params
: Parameter defaults
Defined types
dhcp::dhcp_class
: Manage a DHCP class in the configdhcp::host
: Manage a DHCP hostdhcp::ignoredsubnet
: Manage an ignored subnetdhcp::pool
: Define a dhcp-pool for IPv4 networksdhcp::pool6
: Define a dhcp-pool for IPv6 networksdhcp::sharednetwork
: defines a sharednetwork-segment to wrap several pools together
Data types
Classes
dhcp
Manage an ISC DHCP server
Parameters
The following parameters are available in the dhcp
class:
dnsdomain
nameservers
nameservers_ipv6
ntpservers
dnssearchdomains
dhcp_conf_header
dhcp_conf_ddns
dhcp_conf_ntp
dhcp_conf_pxe
dhcp_conf_extra
dhcp_conf_fragments
interfaces
interface
dnsupdatekey
ddns_update_style
dnskeyname
ddns_update_static
ddns_update_optimize
ddns_client_updates
pxeserver
pxefilename
mtu
ipxe_filename
ipxe_bootstrap
logfacility
default_lease_time
max_lease_time
service_ensure
globaloptions
omapi_port
omapi_name
omapi_algorithm
omapi_key
authoritative
extra_config
dhcp_dir
dhcpd_conf_filename
packagename
manage_package
servicename
manage_service
package_provider
ldap_port
ldap_server
ldap_username
ldap_password
ldap_base_dn
ldap_method
ldap_debug_file
use_ldap
option_code150_label
option_code150_value
dhcp_classes
hosts
ignoredsubnets
pools
pools6
sharednetworks
on_commit
on_release
on_expiry
dhcpd_binary
dnsdomain
Data type: Optional[Array[String[1]]]
Default value: undef
nameservers
Data type: Array[Stdlib::IP::Address::V4]
Default value: []
nameservers_ipv6
Data type: Array[Stdlib::IP::Address::V6]
Default value: []
ntpservers
Data type: Array[Variant[Stdlib::Fqdn,Stdlib::IP::Address]]
Default value: []
dnssearchdomains
Data type: Array[String[1]]
Default value: []
dhcp_conf_header
Data type: String
Default value: 'INTERNAL_TEMPLATE'
dhcp_conf_ddns
Data type: String
Default value: 'INTERNAL_TEMPLATE'
dhcp_conf_ntp
Data type: String
Default value: 'INTERNAL_TEMPLATE'
dhcp_conf_pxe
Data type: String
Default value: 'INTERNAL_TEMPLATE'
dhcp_conf_extra
Data type: String
Default value: 'INTERNAL_TEMPLATE'
dhcp_conf_fragments
Data type: Hash[String[1], Hash[String[1], String[1]]]
Default value: {}
interfaces
Data type: Optional[Array[String[1]]]
Default value: undef
interface
Data type: String[1]
Default value: 'NOTSET'
dnsupdatekey
Data type: Optional[String[1]]
Default value: undef
ddns_update_style
Data type: String[1]
Default value: 'interim'
dnskeyname
Data type: Optional[String[1]]
Default value: undef
ddns_update_static
Data type: String[1]
Default value: 'on'
ddns_update_optimize
Data type: String[1]
Default value: 'on'
ddns_client_updates
Data type: Enum['allow', 'deny']
Default value: 'allow'
pxeserver
Data type: Optional[Stdlib::Host]
Default value: undef
pxefilename
Data type: Optional[String[1]]
Default value: undef
mtu
Data type: Optional[Integer[1]]
Default value: undef
ipxe_filename
Data type: Optional[String[1]]
Default value: undef
ipxe_bootstrap
Data type: Optional[String[1]]
Default value: undef
logfacility
Data type: Dhcp::Syslogfacility
Default value: 'daemon'
default_lease_time
Data type: Integer[-1]
Default value: 43200
max_lease_time
Data type: Integer[-1]
Default value: 86400
service_ensure
Data type: Stdlib::Ensure::Service
Default value: 'running'
globaloptions
Data type: Optional[Variant[String,Array[String[1]]]]
Default value: undef
omapi_port
Data type: Optional[Stdlib::Port]
Default value: undef
omapi_name
Data type: Optional[String[1]]
Default value: undef
omapi_algorithm
Data type: String[1]
Default value: 'HMAC-MD5'
omapi_key
Data type: Optional[String[1]]
Default value: undef
authoritative
Data type: Boolean
Default value: true
extra_config
Data type: Variant[Array[String[1]],String[1]]
Default value: []
dhcp_dir
Data type: Stdlib::Absolutepath
Default value: $dhcp::params::dhcp_dir
dhcpd_conf_filename
Data type: String[1]
Default value: 'dhcpd.conf'
packagename
Data type: String[1]
Default value: $dhcp::params::packagename
manage_package
Data type: Boolean
Default value: true
servicename
Data type: Variant[String[1],Array[String[1]]]
Default value: $dhcp::params::servicename
manage_service
Data type: Boolean
Default value: true
package_provider
Data type: Optional[String[1]]
Default value: $dhcp::params::package_provider
ldap_port
Data type: Stdlib::Port
Default value: 389
ldap_server
Data type: String[1]
Default value: 'localhost'
ldap_username
Data type: String[1]
Default value: 'cn=root, dc=example, dc=com'
ldap_password
Data type: Optional[String[1]]
Default value: undef
ldap_base_dn
Data type: String[1]
Default value: 'dc=example, dc=com'
ldap_method
Data type: Enum['dynamic', 'static']
Default value: 'dynamic'
ldap_debug_file
Data type: Optional[Stdlib::Absolutepath]
Default value: undef
use_ldap
Data type: Boolean
Default value: false
option_code150_label
Data type: String[1]
Default value: 'pxegrub'
option_code150_value
Data type: String[1]
Default value: 'text'
dhcp_classes
Data type: Hash[String[1], Hash]
Default value: {}
hosts
Data type: Hash[String[1], Hash]
Default value: {}
ignoredsubnets
Data type: Hash[String, Hash]
Default value: {}
pools
Data type: Hash[String, Hash]
Default value: {}
pools6
Data type: Hash[String, Hash]
Default value: {}
sharednetworks
Data type: Hash[String, Hash]
Default value: {}
on_commit
Data type: Array[String[1]]
Default value: []
on_release
Data type: Array[String[1]]
Default value: []
on_expiry
Data type: Array[String[1]]
Default value: []
dhcpd_binary
Data type: Optional[Stdlib::Absolutepath]
Default value: $dhcp::params::dhcpd_binary
dhcp::disable
Remove and Disable the DHCP server
Parameters
The following parameters are available in the dhcp::disable
class:
packagename
Data type: String[1]
Default value: $dhcp::params::packagename
servicename
Data type: String[1]
Default value: $dhcp::params::servicename
dhcp::failover
Manage a DHCP failover config
Parameters
The following parameters are available in the dhcp::failover
class:
peer_address
role
address
port
max_response_delay
max_unacked_updates
mclt
load_split
load_balance
omapi_key
dhcp_dir
dhcpd_conf_filename
peer_address
Data type: Any
role
Data type: Any
Default value: 'primary'
address
Data type: Any
Default value: $facts['networking']['ip']
port
Data type: Any
Default value: '519'
max_response_delay
Data type: Any
Default value: '30'
max_unacked_updates
Data type: Any
Default value: '10'
mclt
Data type: Any
Default value: '300'
load_split
Data type: Any
Default value: '128'
load_balance
Data type: Any
Default value: '3'
omapi_key
Data type: Optional[String[1]]
Default value: undef
dhcp_dir
Data type: Any
Default value: $dhcp::dhcp_dir
dhcpd_conf_filename
Data type: Any
Default value: $dhcp::dhcpd_conf_filename
Defined types
dhcp::dhcp_class
Manage a DHCP class in the config
Parameters
The following parameters are available in the dhcp::dhcp_class
defined type:
parameters
Data type: Variant[Array[String[1]], String[1]]
dhcp::host
Manage a DHCP host
Parameters
The following parameters are available in the dhcp::host
defined type:
ip
mac
ddns_hostname
options
comment
ignored
default_lease_time
max_lease_time
ipxe_filename
ipxe_bootstrap
filename
on_commit
on_release
on_expiry
ip
Data type: Optional[Stdlib::IP::Address]
The ip address of the DHCP host.
Default value: undef
mac
Data type: Dhcp::Mac
The MAC address.
ddns_hostname
Data type: String
The name parameter should be the hostname that will be used in setting up the client's A and PTR records. If no ddns-hostname is specified in scope, then the server will derive the hostname automatically, using an algorithm that varies for each of the different update methods.
Default value: $name
options
Data type: Hash
A hash with key value pairs to go to the option lines. The word 'option' is not needed.
Default value: {}
comment
Data type: Optional[String[1]]
A comment added to the DHCP host.
Default value: undef
ignored
Data type: Boolean
If set to true results in ignore booting;
line in the DHCP host configuration.
Default value: false
default_lease_time
Data type: Optional[Integer]
Default lease length.
Default value: undef
max_lease_time
Data type: Optional[Integer]
The maximum lease length.
Default value: undef
ipxe_filename
Data type: Optional[String[1]]
The ipxe filenme, e. g. ipxe.efi.
Default value: undef
ipxe_bootstrap
Data type: Optional[String[1]]
The bootstrap file of UEFI PXE, e. g. winpe.ipxe
Default value: undef
filename
Data type: Optional[String[1]]
The file to be loaded by TFTP.
Default value: undef
on_commit
Data type: Array[String[1]]
An array with statements to go into the hook on commit.
Default value: []
on_release
Data type: Array[String[1]]
An array with statements to go into the hook on release.
Default value: []
on_expiry
Data type: Array[String[1]]
An array with statements to go into the hook on expiry.
Default value: []
dhcp::ignoredsubnet
Manage an ignored subnet
Parameters
The following parameters are available in the dhcp::ignoredsubnet
defined type:
network
Data type: Any
mask
Data type: Any
dhcp::pool
Define a dhcp-pool for IPv4 networks
Parameters
The following parameters are available in the dhcp::pool
defined type:
network
mask
host_mask
gateway
range
failover
options
parameters
sharednetwork
nameservers
nameservers_ipv6
pxeserver
mtu
domain_name
ignore_unknown
on_commit
on_release
on_expiry
network
Data type: Stdlib::IP::Address::V4
Base-IP-Address of the pool
mask
Data type: Stdlib::IP::Address::V4
Networkmask of that pool
host_mask
Data type: Stdlib::IP::Address::V4
Networkmask that is supplied to the client
Defaults to mask
. Use it to supply a smaller
mask to clients if needed
Default value: $mask
gateway
Data type: Optional[String[1]]
Optional IP-address for the gateway
Default value: undef
range
Data type: Optional[Variant[Array[String[1],1],String[1]]]
Optional IP-range to supply addresses from Specify as String with start- and end-IP-address separated by space
Default value: undef
failover
Data type: Optional[String[1]]
Optional name of the DHCP-server to failover
Default value: undef
options
Data type: Optional[Variant[Array[String[1]],String[1]]]
Optional String or Array of option
to set in the pool
Default value: undef
parameters
Data type: Optional[Variant[Array[String[1]],String[1]]]
Optional String or Array of manual parameters to set
Default value: undef
sharednetwork
Data type: Optional[String[1]]
Optional String to group this pool into a shared-network
segment by the name sharednetwork
. You need to define
that segment by using dhcp::sharednetwork
Default value: undef
nameservers
Data type: Optional[Array[String]]
Optional set of IPv4-nameservers to supply to the client
Default value: undef
nameservers_ipv6
Data type: Optional[Array[String]]
Optional set of IPv6-nameservers to supply to the client
Default value: undef
pxeserver
Data type: Optional[String]
Optional name of a PXE-server to boot from
Default value: undef
mtu
Data type: Optional[Integer]
Optional size of the MTU to supply to the client
Default value: undef
domain_name
Data type: Optional[String[1]]
Optional domainname for the client
Default value: undef
ignore_unknown
Data type: Any
Set to true to disable leases for clients not
explicitly defined by dhcp::host
Default value: undef
on_commit
Data type: Array[String[1]]
Set of statements to execute when providing a lease
Default value: []
on_release
Data type: Array[String[1]]
Set of statements to execute when a lease is released
Default value: []
on_expiry
Data type: Array[String[1]]
Set of statements to execute when a lease expires
Default value: []
dhcp::pool6
Define a dhcp-pool for IPv6 networks
Parameters
The following parameters are available in the dhcp::pool6
defined type:
network
prefix
range
range_temp
failover
options
parameters
sharednetwork
nameservers
nameservers_ipv6
pxeserver
mtu
domain_name
ignore_unknown
on_commit
on_release
on_expiry
network
Data type: Stdlib::IP::Address::V6
prefix
Data type: Integer
range
Data type: Optional[Variant[Array[String[1],1],String[1]]]
Default value: undef
range_temp
Data type: Optional[String[1]]
Default value: undef
failover
Data type: Optional[String[1]]
Default value: undef
options
Data type: Optional[Variant[Array[String[1]],String[1]]]
Default value: undef
parameters
Data type: Optional[Variant[Array[String[1]],String[1]]]
Default value: undef
sharednetwork
Data type: Optional[String[1]]
Default value: undef
nameservers
Data type: Optional[Array[String]]
Default value: undef
nameservers_ipv6
Data type: Optional[Array[String]]
Default value: undef
pxeserver
Data type: Optional[String]
Default value: undef
mtu
Data type: Optional[Integer]
Default value: undef
domain_name
Data type: Optional[String[1]]
Default value: undef
ignore_unknown
Data type: Any
Default value: undef
on_commit
Data type: Array[String[1]]
Default value: []
on_release
Data type: Array[String[1]]
Default value: []
on_expiry
Data type: Array[String[1]]
Default value: []
dhcp::sharednetwork
defines a sharednetwork-segment to wrap several pools together
Parameters
The following parameters are available in the dhcp::sharednetwork
defined type:
sharednetwork
Data type: String
Name of the sharednetwork as used in dhcp::pool
and dhcp::pool6
defaults to the title of this resource
Default value: $title
parameters
Data type: Optional[Variant[Array[String[1]], String[1]]]
optional defaults you can set for the shared-network can be either a single parameter-string, or an array of several parameters
Default value: undef
Data types
Dhcp::Mac
The Dhcp::Mac data type.
Alias of Pattern[/^[0-9A-Fa-f]{1,2}(:[0-9A-Fa-f]{1,2}){5}$/]
Dhcp::Syslogfacility
The Dhcp::Syslogfacility data type.
Alias of Enum['user', 'mail', 'daemon', 'auth', 'syslog', 'lpr', 'news', 'uucp', 'cron', 'authpriv', 'ftp', 'ntp', 'security', 'console', 'solaris-cron', 'local0', 'local1', 'local2', 'local3', 'local4', 'local5', 'local6', 'local7']
Changelog
All notable changes to this project will be documented in this file. Each new release typically also includes the latest modulesync defaults. These should not affect the functionality of the module.
v6.1.0 (2024-01-19)
Implemented enhancements:
- Add OracleLinux/Alma/Rocky support #281 (bastelfreak)
- Add Puppet 8 support #276 (bastelfreak)
Merged pull requests:
- README.md: Update badges #282 (bastelfreak)
v6.0.0 (2023-12-11)
Breaking changes:
- Drop Puppet 6 support #273 (bastelfreak)
Implemented enhancements:
- Support for puppetlabs/stdlib 9.x, concat 9.x, Debian 12, and Ubuntu 22.04 #278 (mj)
- Add CentOS Stream 9 and RHEL 9 support #272 (tobias-urdin)
v5.0.1 (2022-11-03)
Fixed bugs:
- Fix the type of options and parameters in pool manifest #267 (alexshyriaiev)
v5.0.0 (2022-05-10)
Breaking changes:
- Drop support for Puppet 5 #256 (smortex)
- Drop support for CentOS/RedHat 6, Debian 8,9 and Ubuntu 16.04 #254 (smortex)
Implemented enhancements:
- allow to override host-subnetmask for pools #262 (sircubbi)
- Add support for grouping of dhcp-pools into shared-networks #261 (sircubbi)
- Add support for Puppet 7 #257 (smortex)
- Add support for Debian 11, Ubuntu 20.04 #255 (smortex)
- Extend support for event clauses to global, pool and pool6 #252 (mergwyn)
Fixed bugs:
Closed issues:
- Add event handlers to main and pool config - Enhancement #251
- Add support of shared-network option #158
Merged pull requests:
- Bugfix: use correct title in shared-network dependency #264 (sircubbi)
- Allow filename and iPXE configuration in dhcp host entries #259 (tom-krieger)
- Allow up-to-date dependencies #253 (smortex)
- Resolve puppet-lint notices #248 (jcpunk)
v4.0.1 (2020-08-23)
Fixed bugs:
- pxeserver parameter no longer supports hostnames, only IP address #239
- Allow indefinite lease times to be set #246 (alexjfisher)
Merged pull requests:
v4.0.0 (2020-02-24)
Breaking changes:
- drop Ubuntu 14.04 support #229 (bastelfreak)
- modulesync 2.5.1 & drop Puppet 4 #218 (bastelfreak)
Implemented enhancements:
- Add support for RHEL/CentOS 8 and Debian 10 #235 (dhoppe)
- Improve datatypes #219 (bastelfreak)
- allow dhcp::host to set "on EVENT" handlers #216 (jflorian)
- allow dhcp::host to override default- and max-lease-time #215 (jflorian)
- update FreeBSD pkg name #211 (mmoll)
- Allow host declaration without IP. #210 (mergwyn)
Fixed bugs:
- Allow puppetlabs/concat 6.x, puppetlabs/stdlib 6.x #225 (dhoppe)
- set dhcpd_ifaces in rc.conf on FreeBSD #212 (mmoll)
Closed issues:
- Ubuntu 18.04 Interfaces not set #200
- Insert possibility to enable host declaration without IP. #106
- Configure dhcpd_ifaces in rc.conf on FreeBSD #88
Merged pull requests:
- update repo links to https #236 (bastelfreak)
- Remove duplicate CONTRIBUTING.md file #231 (dhoppe)
- drop Ubuntu 14.04 CI testing #230 (bastelfreak)
- Update minimum stdlib version to 4.25.0 and use some of the newer types #217 (alexjfisher)
- Add parameter to make installing the package optional #214 (dgivens)
v3.4.0 (2018-12-19)
Implemented enhancements:
- add mac address validation #205 (tiernap)
- add debian 9 support #197 (bastelfreak)
- add ubuntu 18.04 support #196 (bastelfreak)
Fixed bugs:
- Don't add a newline between each DHCP option #207 (bastelfreak)
- Purge useless trailing whitespace in template #206 (bastelfreak)
Merged pull requests:
- make main section nameservers optional #204 (SourceDoctor)
- modulesync 2.1.0 and allow puppet 6.x #199 (bastelfreak)
- fix wrong version schema in metadata.json #198 (bastelfreak)
- enable acceptance tests #195 (bastelfreak)
v3.3.0 (2018-09-07)
Implemented enhancements:
Fixed bugs:
- Debian default ipv4 interfaces config has changed #189 (vStone)
- Enclosing the omapi secret parameter in "quotes" is a syntax error #179 (infracaninophile)
Closed issues:
- INTERFACES default option deprecated on Debian 9 #177
Merged pull requests:
- allow puppetlabs/concat 5.x #193 (bastelfreak)
- allow puppetlabs/stdlib 5.x #191 (bastelfreak)
- Remove docker nodesets #183 (bastelfreak)
- drop EOL OSs; fix puppet version range #181 (bastelfreak)
v3.2.0 (2018-01-04)
Implemented enhancements:
Closed issues:
- Could not find dependent Service[dhcpd] for File[/etc/systemd/system/dhcpd.service] when manage_service is false #170
Merged pull requests:
- release 3.2.0 #176 (bastelfreak)
- Use match_array for better failure output #173 (ekohl)
- Fix notification target #171 (danyel2014)
v3.1.0 (2017-11-11)
Merged pull requests:
- release 3.1.0 #168 (bastelfreak)
- dhcpd.conf-extra: move includes below extra_config #166 (aquister)
- dhcp::failover parameter scope fix #165 (aquister)
- parameterised ddns-hostnames #164 (tiernap)
- Use dhcpd_conf_filename param #163 (aquister)
v3.0.0 (2017-10-18)
Breaking changes:
Implemented enhancements:
- use parameter for dhcpd binary path in unit file #161 (bastelfreak)
- Replace legacy facts with facts hash #160 (bastelfreak)
Merged pull requests:
- Release 3.0.0 #162 (bastelfreak)
v2.1.0 (2017-09-27)
Implemented enhancements:
- Update $extra_config to work with arrays and not only strings #156 (bastelfreak)
- Support SmartOS #155 (petems)
Merged pull requests:
- release 2.1.0 #159 (bastelfreak)
- Add breaking changes section to the changelog #153 (bastelfreak)
v2.0.0 (2017-06-15)
Breaking changes:
- modulesync 0.17.0 and drop puppet3 support #138 (bastelfreak)
Closed issues:
- Update FreeBSD DHCP version to 4.3 #94
- Add pools/hosts parameters for create_resources() #91
- Add OMAPI key configuration #90
- Add define for specifying DHCP classes #86
Merged pull requests:
- release 2.0.0 #152 (bastelfreak)
- FreeBSD uses ISC DHCP 4.3 now #149 (ekohl)
- Fix dhcp::ignoredsubnet template #148 (ekohl)
- Add flag to manage dhcp service #147 (spacedog)
- Added resource args for use with an ENC #146 (jcpunk)
- migrate to puppet4 datatypes #144 (bastelfreak)
- Add dhcp_class define to create custom DHCP class #142 (domcleal)
- Add omapi_name, key, algorithm parameters #141 (domcleal)
v1.1.0 (2017-01-12)
Merged pull requests:
- release 1.1.0 #137 (bastelfreak)
- Set puppet min version_requirement to 3.8.7 + deps #132 (juniorsysadmin)
- parameterize option code 150 #130 (aquister)
- add parameter list #128 (trevharmon)
- deny dynamic bootp clients if failover is set #126 (aquister)
- Add missing badges #124 (dhoppe)
- params for update-static-leases and update-optimization #123 (aquister)
- support for IPv6 pool #121 (aquister)
- support for IPv6 nameservers #120 (aquister)
- Document the define in manifests/ignoredsubnet.pp #118 (tobias-urdin)
- added dhcpd_conf_filename param #117 (aquister)
- Clarify test names #115 (jskarpe)
v1.0.1 (2016-09-26)
Closed issues:
- All Numeric MAC causes Detail: undefined method `upcase' #109
- Gap between forge and github version #104
- Add MTU parameter #98
Merged pull requests:
- release: 1.0.1 #114 (daenney)
- metadata: Concat 2 is backwards compatible with 1 #113 (daenney)
- Allow for dhcp host to be ignored #111 (charlesdunbar)
- Add parameter validation to dhcp::host #110 (alexjfisher)
- correct misleading documentation for pool ranges #107 (dwerder)
- Added ddns-update-style option #101 (jskarpe)
- add mtu option #99 (alvin-huang)
v1.0.0 (2016-08-18)
Closed issues:
- Parameterise "authoritative" statement #87
- No dependency on Module Concat #17
- Docs: Rdoc for classes and defines #13
- Docs: mention the ripienaar-concat dependency #11
Merged pull requests:
- Modulesync 0.12.1 & Release 1.0.0 #103 (bastelfreak)
- modulesync 0.11.1 #102 (bastelfreak)
- modulesync 0.8.1 #97 (bbriggs)
- Added option dns search domain #96 (jskarpe)
- Add 'authoritative' parameter #95 (domcleal)
- Use ISC default for default_lease_time #84 (domcleal)
- rubocop: fix Style/StringLiterals #83 (bastelfreak)
- Add initial Archlinux and LDAP support #79 (bastelfreak)
- Add optional "comment" field to host template. #75 (simon3270)
- Work around notification problem with concat resources #71 (michaelweiser)
v0.5.0 (2016-05-22)
Breaking changes:
Implemented enhancements:
Closed issues:
Merged pull requests:
- Modulesync 0.6.3 + release 0.5.0 #81 (bastelfreak)
- [WIP]modulesync 0.6.1 #80 (bastelfreak)
- Fix typo in spec test #76 (mattkirby)
- Add the ability to add extra configurations in plain-text #73 (9bryan)
- do not sort pool dns servers list #72 (ghost)
- Release 0.4.0 prep #70 (bmjen)
- Enable Ignore unknown clients in templating #68 (prizos)
- properly put ""quotes around the domain-name option in pool declarations #67 (ghost)
- Changed dhcpd.conf File dependency to Concat. #64 (chrisdaish)
- Fix in documentation for dhcp::pool. range should be array instead of string #63 (bjvrielink)
- Add omapi_port parameter #62 (treydock)
- Fix default ntpservers value to not fail validation #61 (treydock)
- Allow additional options to be specified for dhcp::host #60 (treydock)
- Add dnskeyname parameter #58 (treydock)
- Normalise MAC addresses to upper case in dhcpd.host #57 (drt24)
- Modernize Module #56 (underscorgan)
- Move to use osfamily #55 (sfozz)
- Issues/fix rspec #50 (sfozz)
- Allow overriding the domain name per pool #48 (ekohl)
- Add nameservers and pxeserver parameters to pool #47 (ekohl)
- Cleanup 34 #46 (underscorgan)
- Add ignoresubnet class #45 (underscorgan)
- Added globaloptions parameter to dhcp class #41 (dgmorales)
- Corrections and fixes... #40 (pecastro)
- Remove trailing whitespace :( #38 (underscorgan)
- Prep for 0.3.0 release. #37 (underscorgan)
- Add patches from foreman-dhcp #36 (ekohl)
- Remove deprecation warnings for templates and use of concat::setup #32 (kscherer)
- Correct concat dependency #30 (hunner)
- Concat update #28 (jhoblitt)
- Add apache 2.0 license. #26 (apenney)
- addition of some simple unit tests for issue 24 #25 (wolfspyre)
- Make 'range' optional #21 (faja)
- Define class without ntpservers-parameter. #19 (ahaitoute)
- Remove failover parameter from class dhcp #14 (saz)
- Added Redhat/CentOS package name #12 (crayfishx)
- Whitespace only removal of comments #10 (jeffmccune)
- Send the client hostname to be used if unset #9 (jeffmccune)
- Make the dhcp module more reusable #8 (jeffmccune)
- Make all template fragments have header comments #7 (jeffmccune)
- Update dhcp module path for Ubuntu precise. #6 (nanliu)
- Fix modulefile for puppetlabs. #5 (nanliu)
- Update manifests per puppet-lint #4 (nanliu)
- Module puppet-lint clean up. #3 (nanliu)
- Fix typo in dhcpd.conf.ddns.erb #1 (jeffmccune)
* This Changelog was automatically generated by github_changelog_generator
Dependencies
- puppetlabs/concat (>= 4.1.0 < 10.0.0)
- puppetlabs/stdlib (>= 4.25.0 < 10.0.0)
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2013 Puppet Labs Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.