summaryrefslogtreecommitdiff
path: root/manifests/dhcpd.pp
blob: d496e91dd7b199e86f4a752b3156c71fa3604714 (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
69
70
71
72
73
74
75
76
class profiles::dhcpd (
) {

  $keyname = 'dhcp'
  $key = lookup("dns::keys")[$keyname]

  $menu = 'Raspberry Pi Boot'
  $menu_len = length($menu)

  if defined('$dns::dnsdir') {
    $updatekey = "${dns::dnsdir}/${keyname}.key"
  } else {
    $updatekey = undef
  }

  class { 'dhcp':
    service_ensure => running,
    manage_service => false,
    dnsdomain      => [
      'dynamic.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     => $updatekey,
    dnskeyname       => $keyname,
    # require        => Dns::Key[$keyname],
    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, ],
    }
  }
}