summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2022-02-20 23:36:17 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2022-02-28 12:59:31 +0100
commit0087c65cf6c1a25a2ad91630115903cab82eb21f (patch)
tree6f1e4e4ee71a0f6b221463f17da7031ac9d86eae
parentMade dns_record autoreport more forgiving. (diff)
downloadprofiles-0087c65cf6c1a25a2ad91630115903cab82eb21f.tar.gz
profiles-0087c65cf6c1a25a2ad91630115903cab82eb21f.tar.xz
Add module dhcpd.
-rw-r--r--manifests/dhcpd.pp67
1 files changed, 67 insertions, 0 deletions
diff --git a/manifests/dhcpd.pp b/manifests/dhcpd.pp
new file mode 100644
index 0000000..bf3f965
--- /dev/null
+++ b/manifests/dhcpd.pp
@@ -0,0 +1,67 @@
+class profiles::dhcpd (
+) {
+
+ $keyname = 'dhcp'
+ $key = lookup("dns::keys")[$keyname]
+
+ $menu = 'Raspberry Pi Boot'
+ $menu_len = length($menu)
+
+ class { 'dhcp':
+ service_ensure => running,
+ 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 => "${dns::dnsdir}/${keyname}.key",
+ 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',
+ ],
+ }
+
+ user { 'dhcp':
+ membership => 'minimum',
+ groups => [ $dns::group, ],
+ }
+}