class profiles::dhcpd ( Optional[String] $dns_key_path = undef, Optional[String] $dns_key_name = 'dhcp', ) { $menu = 'Raspberry Pi Boot' $menu_len = length($menu) class { 'dhcp': service_ensure => running, manage_service => false, dnsdomain => [ 'adrift.space', '1.0.10.in-addr.arpa', ], dnssearchdomains => [ 'adrift.space', ], nameservers => [ '10.0.0.40', ], nameservers_ipv6 => [ '2001:9b1:eff:a600:2d8:61ff:fe51:d925', ], interfaces => [ $facts['networking']['primary'], ], dnsupdatekey => "${dns_key_path}/${dns_key_name}.key", dnskeyname => $dns_key_name, globaloptions => [ # Declare vendor extension PXEClient 'space PXEClient', 'PXEClient.discovery-control code 6 = unsigned integer 8', 'PXEClient.menu-prompt code 10 = { unsigned integer 8, text }', 'PXEClient.boot-menu code 9 = { unsigned integer 16, unsigned integer 8, text }', # Instanciate vendor extension PXEClient 'PXEClient.discovery-control 3', 'PXEClient.menu-prompt 0 "PXE"', "PXEClient.boot-menu 0 ${menu_len} \"${menu}\"", ], # extra_config => [ # 'allow booting', # 'allow bootp', # ], } dhcp::dhcp_class { 'vendor-classes': parameters => [ 'match option vendor-class-identifier', ] } dhcp::pool { 'pool': network => '10.0.0.0', mask => '255.255.254.0', range => [ '10.0.1.10 10.0.1.250', ], gateway => '10.0.0.1', pxeserver => '10.0.0.40', options => [ 'vendor-class-identifier "PXEClient"', ], parameters => [ 'vendor-option-space PXEClient', ], } if defined('$dns::group') { user { 'dhcp': membership => 'minimum', groups => [ $dns::group, ], } } }