Version information
This version is compatible with:
- Puppet Enterprise 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x
- Puppet >= 5.5.8 < 7.0.0
- , , , , , , Archlinux, ,
Start using this module
Add this module to your Puppetfile:
mod 'theforeman-dhcp', '5.1.1'Learn more about managing modules with a PuppetfileDocumentation
DHCP module for Puppet
DHCP module for theforeman. Based on original DHCP module by ZLeslie, thanks to him for the original work.
Installs and manages a DHCP server.
Dependencies
Features
- Multiple subnet support
- Host reservations
- Secure dynamic DNS updates when combined with Bind
- Failover support
Usage
Define the server and the zones it will be responsible for.
class { 'dhcp':
dnsdomain => [
'dc1.example.net',
'1.0.10.in-addr.arpa',
],
nameservers => ['10.0.1.20'],
interfaces => ['eth0'],
dnsupdatekey => "/etc/bind/keys.d/$ddnskeyname",
require => Bind::Key[ $ddnskeyname ],
pxeserver => '10.0.1.50',
pxefilename => 'pxelinux.0',
}
dhcp::pool
Define the pool attributes
dhcp::pool{ 'ops.dc1.example.net':
network => '10.0.1.0',
mask => '255.255.255.0',
range => '10.0.1.100 10.0.1.200',
gateway => '10.0.1.1',
}
Override global attributes with pool specific
dhcp::pool{ 'ops.dc1.example.net':
network => '10.0.1.0',
mask => '255.255.255.0',
range => '10.0.1.100 10.0.1.200',
gateway => '10.0.1.1',
nameservers => ['10.0.1.2', '10.0.2.2'],
pxeserver => '10.0.1.2',
}
For the support of static routes (RFC3442):
dhcp::pool{ 'ops.dc1.example.net':
network => '10.0.1.0',
mask => '255.255.255.0',
range => '10.0.1.100 10.0.1.200',
gateway => $gw,
static_routes => [ { 'mask' => '32', 'network' => '169.254.169.254', 'gateway' => $ip },
{ 'mask' => '0', 'gateway' => $gw } ],
}
dhcp::host
Create host reservations.
dhcp::host {
'server1': mac => "00:50:56:00:00:01", ip => "10.0.1.51";
'server2': mac => "00:50:56:00:00:02", ip => "10.0.1.52";
'server3': mac => "00:50:56:00:00:03", ip => "10.0.1.53";
}
Contributors
Original authors:
- Zach Leslie zach.leslie@gmail.com
- Ben Hughes git@mumble.org.uk
- Greg Sutcliffe greg.sutcliffe@gmail.com
Copyright (c) 2010-2016 Zach Leslie, Ben Hughes, Greg Sutcliffe, Foreman developers
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
https://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.
Reference
Table of Contents
Classes
Public Classes
dhcp: Manage an ISC DHCP serverdhcp::disable: Remove and Disable the DHCP serverdhcp::failover: Define a failover peer
Private Classes
dhcp::params: Default parameters
Defined types
dhcp::dhcp_class: Define a DHCP classdhcp::host: Define a DHCP host reservationdhcp::pool: Define a DHCP pool
Data types
Classes
dhcp
Manage an ISC DHCP server
Parameters
The following parameters are available in the dhcp class.
dnsdomain
Data type: Array[String]
Default value: $dhcp::params::dnsdomain
nameservers
Data type: Array[String]
Default value: ['8.8.8.8', '8.8.4.4']
failover
Data type: Boolean
Default value: false
bootp
Data type: Optional[Boolean]
Default value: undef
ntpservers
Data type: Array[String]
Default value: []
interfaces
Data type: Optional[Array[String]]
Default value: undef
interface
Data type: String
Default value: 'NOTSET'
default_lease_time
Data type: Integer[0]
Default value: 43200
max_lease_time
Data type: Integer[0]
Default value: 86400
dnskeyname
Data type: String
Default value: 'rndc-key'
dnsupdatekey
Data type: Optional[String]
Default value: undef
dnsupdateserver
Data type: Optional[String]
Default value: undef
omapi
Data type: Boolean
Default value: true
omapi_name
Data type: Optional[String]
Default value: undef
omapi_algorithm
Data type: String
Default value: 'HMAC-MD5'
omapi_key
Data type: Optional[String]
Default value: undef
pxeserver
Data type: Optional[String]
Default value: undef
pxefilename
Data type: String
Default value: $dhcp::params::pxefilename
mtu
Data type: Optional[Integer[0]]
Default value: undef
bootfiles
Data type: Hash[String, String]
Default value: $dhcp::params::bootfiles
logfacility
Data type: String
Default value: 'local7'
dhcp_monitor
Data type: Boolean
Default value: true
dhcp_dir
Data type: Stdlib::Absolutepath
Default value: $dhcp::params::dhcp_dir
packagename
Data type: String
Default value: $dhcp::params::packagename
servicename
Data type: String
Default value: $dhcp::params::servicename
option_static_route
Data type: Any
Default value: undef
options
Data type: Variant[Array[String], Optional[String]]
Default value: undef
authoritative
Data type: Boolean
Default value: false
dhcp_root_group
Data type: String
Default value: $dhcp::params::root_group
ddns_updates
Data type: Boolean
Default value: false
ddns_domainname
Data type: Optional[String]
Default value: undef
ddns_rev_domainname
Data type: Optional[String]
Default value: undef
ddns_update_style
Data type: Enum['none', 'interim', 'standard']
Default value: 'interim'
pools
Data type: Hash[String, Hash]
Default value: {}
hosts
Data type: Hash[String, Hash]
Default value: {}
includes
Data type: Variant[Array[String], Optional[String]]
Default value: undef
config_comment
Data type: String
Default value: 'dhcpd.conf'
dhcp::disable
Remove and Disable the DHCP server
dhcp::failover
Define a failover peer
Parameters
The following parameters are available in the dhcp::failover class.
peer_address
Data type: String
The address of the failover peer.
role
Data type: Enum['primary', 'secondary']
Default value: 'primary'
address
Data type: String
Default value: $facts['ipaddress']
port
Data type: Variant[Integer[0, 65535], String]
Default value: 519
max_response_delay
Data type: Variant[Integer[0], String]
Default value: 30
max_unacked_updates
Data type: Variant[Integer[0], String]
Default value: 10
mclt
Data type: Variant[Integer[0], String]
Default value: 300
load_split
Data type: Variant[Integer[0], String]
Default value: 128
load_balance
Data type: Variant[Integer[0], String]
Default value: 3
omapi_key
Data type: Optional[String]
Default value: undef
Defined types
dhcp::dhcp_class
Define a DHCP class
Parameters
The following parameters are available in the dhcp::dhcp_class defined type.
parameters
Data type: Variant[Array[String], String]
The parameters for the class definition. When specified as a string, it will be used verbatim with a semi colon at the end. When specified as an array, every string is used and appended with a semi colon.
dhcp::host
Define a DHCP host reservation
Parameters
The following parameters are available in the dhcp::host defined type.
ip
Data type: String
The IP address in the reservation
mac
Data type: Dhcp::Macaddress
The host's MAC address
comment
Data type: Optional[String]
An optional comment for the host
Default value: undef
dhcp::pool
Define a DHCP pool
Parameters
The following parameters are available in the dhcp::pool defined type.
network
Data type: String
mask
Data type: String
gateway
Data type: Optional[String]
Default value: undef
pool_parameters
Data type: Variant[Array[String], Optional[String]]
Default value: undef
range
Data type: Variant[Array[Dhcp::Range], Optional[Dhcp::Range], Enum[''], Boolean]
Default value: undef
failover
Data type: Optional[String]
Default value: undef
options
Data type: Variant[Array[String], Optional[String]]
Default value: undef
parameters
Data type: Variant[Array[String], Optional[String]]
Default value: undef
mtu
Data type: Optional[Integer[0]]
Default value: undef
nameservers
Data type: Variant[Array[String], Optional[String]]
Default value: undef
pxeserver
Data type: Optional[String]
Default value: undef
pxefilename
Data type: Optional[String]
Default value: undef
domain_name
Data type: Optional[String]
Default value: undef
static_routes
Data type: Optional[Array[Dhcp::StaticRoute]]
Default value: undef
search_domains
Data type: Variant[Array[String], Optional[String]]
Default value: undef
raw_append
Data type: Optional[String]
Default value: undef
raw_prepend
Data type: Optional[String]
Default value: undef
Data types
Dhcp::Macaddress
The Dhcp::Macaddress data type.
Alias of Pattern[/^[0-9A-Fa-f]{1,2}(:[0-9A-Fa-f]{1,2}){5}$/]
Dhcp::Range
The Dhcp::Range data type.
Alias of Pattern[/^(dynamic-bootp )?((([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))[.]){3}([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d)))(\/((([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))[.]){3}([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))|[0-9]+))?( ((([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))[.]){3}([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d)))(\/((([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))[.]){3}([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))|[0-9]+))?)?$/]
Dhcp::StaticRoute
The Dhcp::StaticRoute data type.
Alias of Struct[{ 'mask' => String, 'gateway' => String, Optional['network'] => String, }]
Changelog
5.1.1 (2020-02-12)
Implemented enhancements:
5.1.0 (2019-10-24)
Implemented enhancements:
5.0.1 (2019-06-12)
Merged pull requests:
- allow newer puppetlabs-concat version #157 (mmoll)
- Allow
puppetlabs/stdlib6.x #156 (alexjfisher)
5.0.0 (2019-04-15)
Breaking changes:
Implemented enhancements:
Fixed bugs:
4.3.0 (2019-01-10)
Implemented enhancements:
- update FreeBSD pkg name and support 12.x #144 (mmoll)
- Create some puppet-strings documentation #143 (ekohl)
- Support Puppet 6 #141 (ekohl)
4.2.0 (2018-10-04)
Implemented enhancements:
- Support Ubuntu/bionic, remove Debian 7 & Fedora 25 #127 (mmoll)
- make ddns-update-style adjustable #126 (zeromind)
Merged pull requests:
- allow puppetlabs-stdlib 5.x #135 (mmoll)
- allow puppetlabs-concat 5.x #134 (mmoll)
- Mark compatible with camptocamp-systemd 2.0 #131 (mateusz-gozdek-sociomantic)
4.1.1
- Correct listening on EL7 when using
$interface
4.1.0
- Make the OMAPI algorithm configurable
- Drop EOL operating systems and add new ones to metadata.json
4.0.2
- Fix listen on interfaces in EL7
- Add validation for the DHCP range
4.0.1
- Validate parameters using Puppet 4 types
4.0.0
- Drop Puppet 3 support
- Add
$omapi, so OMAPI can be turned off - Add
$bootp, so BOOTP can be turned off - Improve failover logic
3.1.0
- Add
$ddns_updatesparameter to allow insecure DDNS updates. - Add
$pxefilenameparameter todhcp::pool. - Add
$raw_prependand$raw_appendparameters todhcp::pool. - Fix classless static routes.
3.0.0
- Add bootfiles parameter with hash of client architectures to boot loaders used for "filename", defaulting to "pxelinux.0" (#14920)
- Add mtu parameter to main class and to dhcp::pool
- Add Arch Linux support
- Drop support for Ruby 1.8.7
- Many improvements to tests
2.3.2
- Fix metadata to show Puppet 4 compatibility
- Remove hashes around pool names for Webmin compatibility
2.3.1
- Fix domain-search syntax for multiple search domains (#70)
- Update FreeBSD package name for ISC DHCP 4.3
2.3.0
- Add dhcp::failover class to configure DHCP failover between servers
- Add includes parameter to include other config files
- Handle and ignore an empty omapi_key parameter
- Add tests for dhcp::dhcp_class
- Support Puppet 3.0 minimum
- Support Fedora 21, remove Debian 6 (Squeeze)
2.2.0
- Add pools, hosts parameters to dhcp to automatically create dhcp::pool and dhcp::host resources, usable from Hiera and Foreman
- Add ddns_domainname and ddns_rev_domainname parameters to dhcp
- Add ntpservers parameter to dhcp
- Permit the dhcp::pool range parameter to be an array of ranges
2.1.0
- Support configuration on FreeBSD
- Add options parameter for arbitrary options
- Add dhcp::class define to add new DHCP class definitions
- Add pool_parameters param to dhcp::pool for allow statements etc.
- Add authoritative parameter
- Add search_domains parameter to dhcp::pool
- Add omapi_name/omapi_key parameters
2.0.0
- Add parameters to dhcp and dhcp:pool to configure static routes
- Change theforeman-concat_native to puppetlabs-concat
- Fix quoting of domain-name option
- Test with future parser and Puppet 4
1.6.0
- Add
parameters,optionsparameters to dhcp::pool - Add
default_lease_time,max_lease_timeparameters to dhcp - Use longer ISC defaults for lease times
- Minimising differences to puppetlabs/dhcp for eventual merger
- Do not set domain-name option if dnsdomain parameter is empty
- Strip pool config values before checking if they should be set
- Removing unused code, tidyups, better test coverage, increased linting
1.5.0
- Add nameservers parameter to dhcp::pool
- Fix config output when empty pool range is passed
1.4.0
- Add pxeserver parameter to dhcp::pool
- Unsetting pxeserver/pxefilename disables PXE in a subnet
- Add tests, fix lint and style issues
1.3.1
- Change Debian package name to prevent reinstallation on each run
- Fix puppet-lint issues
* This Changelog was automatically generated by github_changelog_generator
Dependencies
- camptocamp/systemd (>= 1.0.0 < 3.0.0)
- puppetlabs/concat (>= 1.0.0 < 7.0.0)
- puppetlabs/stdlib (>= 4.18.0 < 7.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 [yyyy] [name of copyright owner]
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.