{"id":15022783,"url":"https://github.com/voxpupuli/puppet-dhcp","last_synced_at":"2026-03-08T09:36:51.240Z","repository":{"id":1555629,"uuid":"1945993","full_name":"voxpupuli/puppet-dhcp","owner":"voxpupuli","description":"Puppet module for deploying dhcp","archived":false,"fork":false,"pushed_at":"2024-09-17T07:51:17.000Z","size":643,"stargazers_count":41,"open_issues_count":19,"forks_count":137,"subscribers_count":127,"default_branch":"master","last_synced_at":"2024-10-29T14:22:34.310Z","etag":null,"topics":["archlinux-puppet-module","centos-puppet-module","debian-puppet-module","hacktoberfest","linux-puppet-module","puppet","redhat-puppet-module","ubuntu-puppet-module"],"latest_commit_sha":null,"homepage":"https://forge.puppet.com/puppet/dhcp","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"lockitron/selfstarter","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/voxpupuli.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"open_collective":"vox-pupuli","github":"voxpupuli"}},"created_at":"2011-06-24T05:26:58.000Z","updated_at":"2024-09-17T07:51:19.000Z","dependencies_parsed_at":"2023-12-13T05:32:37.874Z","dependency_job_id":"9e2d4800-077e-4fd1-ad7e-822d33ebf7c9","html_url":"https://github.com/voxpupuli/puppet-dhcp","commit_stats":{"total_commits":434,"total_committers":84,"mean_commits":5.166666666666667,"dds":0.6497695852534562,"last_synced_commit":"1a1276fb572596174a18e4329e80b9a483d21869"},"previous_names":["puppetlabs/puppetlabs-dhcp","voxpupuli/puppetlabs-dhcp"],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-dhcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-dhcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-dhcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-dhcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/voxpupuli","download_url":"https://codeload.github.com/voxpupuli/puppet-dhcp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247419854,"owners_count":20936012,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archlinux-puppet-module","centos-puppet-module","debian-puppet-module","hacktoberfest","linux-puppet-module","puppet","redhat-puppet-module","ubuntu-puppet-module"],"created_at":"2024-09-24T19:58:22.716Z","updated_at":"2025-12-11T21:45:29.803Z","avatar_url":"https://github.com/voxpupuli.png","language":"Ruby","funding_links":["https://opencollective.com/vox-pupuli","https://github.com/sponsors/voxpupuli"],"categories":[],"sub_categories":[],"readme":"# DHCP module for Puppet\n\n[![Build Status](https://github.com/voxpupuli/puppet-dhcp/workflows/CI/badge.svg)](https://github.com/voxpupuli/puppet-dhcp/actions?query=workflow%3ACI)\n[![Release](https://github.com/voxpupuli/puppet-dhcp/actions/workflows/release.yml/badge.svg)](https://github.com/voxpupuli/puppet-dhcp/actions/workflows/release.yml)\n[![Puppet Forge](https://img.shields.io/puppetforge/v/puppet/dhcp.svg)](https://forge.puppetlabs.com/puppet/dhcp)\n[![Puppet Forge - downloads](https://img.shields.io/puppetforge/dt/puppet/dhcp.svg)](https://forge.puppetlabs.com/puppet/dhcp)\n[![Puppet Forge - endorsement](https://img.shields.io/puppetforge/e/puppet/dhcp.svg)](https://forge.puppetlabs.com/puppet/dhcp)\n[![Puppet Forge - scores](https://img.shields.io/puppetforge/f/puppet/dhcp.svg)](https://forge.puppetlabs.com/puppet/dhcp)\n[![puppetmodule.info docs](https://www.puppetmodule.info/images/badge.png)](https://www.puppetmodule.info/m/puppet-dhcp)\n[![Apache-2.0 License](https://img.shields.io/github/license/voxpupuli/puppet-dhcp.svg)](LICENSE)\n\n## Overview\n\nInstalls and manages a DHCP server.\n\n## Features\n\n* Multiple subnet support\n* Host reservations\n* Secure dynamic DNS updates when combined with Bind\n* Can create a dummy (ignored) subnet so that the server can be used only as a\n  helper-address target\n\n## Usage\n\nDefine the server and the zones it will be responsible for.\n\n```puppet\nclass { 'dhcp':\n  service_ensure =\u003e running,\n  dnsdomain      =\u003e [\n    'dc1.example.net',\n    '1.0.10.in-addr.arpa',\n  ],\n  nameservers  =\u003e ['10.0.1.20'],\n  ntpservers   =\u003e ['us.pool.ntp.org'],\n  interfaces   =\u003e ['eth0'],\n  dnsupdatekey =\u003e '/etc/bind/keys.d/rndc.key',\n  dnskeyname   =\u003e 'rndc-key',\n  require      =\u003e Bind::Key['rndc-key'],\n  pxeserver    =\u003e '10.0.1.50',\n  pxefilename  =\u003e 'pxelinux.0',\n  omapi_port   =\u003e 7911,\n}\n```\n\n### dhcp::pool\n\nDefine the pool attributes. This example will create a pool, which serves IPs of\ntwo different ranges in the same network.\n\nMay be passed as a hash into the DHCP class.\n\n```puppet\ndhcp::pool{ 'ops.dc1.example.net':\n  network =\u003e '10.0.1.0',\n  mask    =\u003e '255.255.255.0',\n  range   =\u003e ['10.0.1.10 10.0.1.100', '10.0.1.200 10.0.1.250' ],\n  gateway =\u003e '10.0.1.1',\n}\n```\n\n### dhcp::ignoredsubnet\n\nDefine a subnet that will be ignored - useful for making the DHCP server only\nrespond to requests forwarded by switches etc.\n\nMay be passed as a hash into the DHCP class.\n```puppet\ndhcp::ignoredsubnet{ 'eth0':\n  network =\u003e '10.0.0.0',\n  mask    =\u003e '255.255.255.0',\n}\n```\n\n### dhcp::host\n\nCreate host reservations.\n\nMay be passed as a hash into the DHCP class.\n```puppet\ndhcp::host { 'server1':\n  comment            =\u003e 'Optional descriptive comment',\n  mac                =\u003e '00:50:56:00:00:01',\n  ip                 =\u003e '10.0.1.51',\n  # Optionally override subnet/global settings for some hosts.\n  default_lease_time =\u003e 600,\n  max_lease_time     =\u003e 900,\n  # Optionally declare event statements in any combination.\n  on_commit =\u003e [\n    'set ClientIP = binary-to-ascii(10, 8, \".\", leased-address)',\n    'execute(\"/usr/local/bin/my_dhcp_helper.sh\", ClientIP)'\n  ],\n  on_release =\u003e [\n    'set ClientIP = binary-to-ascii(10, 8, \".\", leased-address)',\n    'log(concat(\"Released IP: \", ClientIP))'\n  ],\n  on_expiry =\u003e [\n    'set ClientIP = binary-to-ascii(10, 8, \".\", leased-address)',\n    'log(concat(\"Expired IP: \", ClientIP))'\n  ]\n}\n```\n\n### parameters\n\nParameters are available to configure pxe or ipxe\n\nBoot ipxe from pxe. When configured this overrides pxefilename.\nFor more information see [ipxe.org](http://ipxe.org/howto/chainloading).\n\n```puppet\nclass { 'dhcp':\n  ipxe_filename  =\u003e 'undionly.kpxe',\n  ipxe_bootstrap =\u003e 'bootstrap.kpxe',\n  pxeserver      =\u003e '10.0.1.50',\n}\n```\n\nThe following is the list of all parameters available for this class.\n\n| Parameter              | Data Type | Default Value                     |\n| :--------------------- | :-------: | :-------------------------------- |\n| `authoritative`        | Boolean   | `true`                            |\n| `ddns_update_static`   | String    | `'on'`                            |\n| `ddns_update_style`    | String    | `'interim'`                       |\n| `ddns_update_optimize` | String    | `'on'`                            |\n| `default_lease_time`   | Integer   | `43200`                           |\n| `dhcp_conf_ddns`       | String    | `'INTERNAL_TEMPLATE'`             |\n| `dhcp_conf_extra`      | String    | `'INTERNAL_TEMPLATE'`             |\n| `dhcp_conf_fragments`  | Hash      | `{}`                              |\n| `dhcp_conf_header`     | String    | `'INTERNAL_TEMPLATE'`             |\n| `dhcp_conf_ntp`        | String    | `'INTERNAL_TEMPLATE'`             |\n| `dhcp_conf_pxe`        | String    | `'INTERNAL_TEMPLATE'`             |\n| `dhcp_dir`             | String    | `$dhcp::params::dhcp_dir`         |\n| `dhcpd_conf_filename`  | String    | `'dhcpd.conf'`                    |\n| `dnsdomain`            | Array     | `undef`                           |\n| `dnskeyname`           | String    | `undef`                           |\n| `dnssearchdomains`     | Array     | `[]`                              |\n| `dnsupdatekey`         | String    | `undef`                           |\n| `extra_config`         | String    | `''`                              |\n| `globaloptions`        | String    | `''`                              |\n| `interface`            | String    | `'NOTSET'`                        |\n| `interfaces`           | Array     | `undef`                           |\n| `ipxe_bootstrap`       | String    | `undef`                           |\n| `ipxe_filename`        | String    | `undef`                           |\n| `ldap_base_dn`         | String    | `'dc=example, dc=com'`            |\n| `ldap_debug_file`      | String    | `undef`                           |\n| `ldap_method`          | String    | `'dynamic'`                       |\n| `ldap_password`        | String    | `''`                              |\n| `ldap_port`            | Integer   | `389`                             |\n| `ldap_server`          | String    | `'localhost'`                     |\n| `ldap_username`        | String    | `'cn=root, dc=example, dc=com'`   |\n| `logfacility`          | String    | `'daemon'`                        |\n| `manage_service`       | Boolean   | `true`                            |\n| `max_lease_time`       | Integer   | `86400`                           |\n| `mtu`                  | Integer   | `undef`                           |\n| `nameservers`          | Array     | `[]`                              |\n| `nameservers_ipv6`     | Array     | `[]`                              |\n| `ntpservers`           | Array     | `[]`                              |\n| `omapi_algorithm`      | String    | `HMAC-MD5`                        |\n| `omapi_key`            | String    | `undef`                           |\n| `omapi_name`           | String    | `undef`                           |\n| `omapi_port`           | Integer   | `undef`                           |\n| `option_code150_label` | String    | `pxegrub`                         |\n| `option_code150_value` | String    | `text`                            |\n| `package_provider`     | String    | `$dhcp::params::package_provider` |\n| `packagename`          | String    | `$dhcp::params::packagename`      |\n| `manage_package`       | Boolean   | `true`                            |\n| `pxefilename`          | String    | `undef`                           |\n| `pxeserver`            | String    | `undef`                           |\n| `service_ensure`       | Enum      | `running`                         |\n| `servicename`          | String    | `$dhcp::params::servicename`      |\n| `use_ldap`             | Boolean   | `false`                           |\n| `dhcp_classes`         | Hash      | `{}`                              |\n| `hosts`                | Hash      | `{}`                              |\n| `ignoredsubnets`       | Hash      | `{}`                              |\n| `pools`                | Hash      | `{}`                              |\n| `pools6`               | Hash      | `{}`                              |\n\n## Contributors\n\nZach Leslie \u003czach.leslie@gmail.com\u003e\nBen Hughes \u003cgit@mumble.org.uk\u003e\nSam Dunster \u003csdunster@uow.edu.au\u003e\nGarrett Honeycutt \u003cgh@learnpuppet.com\u003e\nMatt Kirby \u003cmk.kirby@gmail.com\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-dhcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoxpupuli%2Fpuppet-dhcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-dhcp/lists"}