summaryrefslogtreecommitdiff
path: root/manifests/dhcpd.pp
blob: 4b3e08569ae7d876eaecf120ac535808c10272e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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, ],
    }
  }
}