]> git.openstreetmap.org Git - chef.git/commitdiff
Add PXE boot support using ipxe netboot.xyz
authorGrant Slater <git@firefishy.com>
Thu, 11 Nov 2021 01:26:01 +0000 (01:26 +0000)
committerGrant Slater <git@firefishy.com>
Thu, 11 Nov 2021 01:33:33 +0000 (01:33 +0000)
cookbooks/dhcpd/recipes/default.rb
cookbooks/dhcpd/templates/default/dhcpd.conf.erb

index a8f0dd6f7a52a9affb1119584a1669c16988bbbf..be4fba2abc8d6805daada8d74b2683471ec58e36 100644 (file)
 
 include_recipe "networking"
 
-package "isc-dhcp-server"
+package %w[
+  isc-dhcp-server
+  tftpd-hpa
+]
+
+service "tftpd-hpa" do
+  action [:enable, :start]
+  supports :status => true, :restart => true
+end
+
+remote_file "/srv/tftp/netboot.xyz.efi" do
+  action :create
+  source "https://boot.netboot.xyz/ipxe/netboot.xyz.efi"
+  owner "root"
+  group "root"
+  mode "644"
+end
+
+remote_file "/srv/tftp/netboot.xyz.kpxe" do
+  action :create
+  source "https://boot.netboot.xyz/ipxe/netboot.xyz.kpxe"
+  owner "root"
+  group "root"
+  mode "644"
+end
 
 domain = "#{node[:networking][:roles][:external][:zone]}.openstreetmap.org"
 
index 51cb4674210636279c34cac23312a43dc8bf62a8..dd5a8262e656461014a0b472077dda38c9cc32fa 100644 (file)
@@ -1,5 +1,7 @@
 # DO NOT EDIT - This file is being maintained by Chef
 
+option architecture-type code 93 = unsigned integer 16;
+
 default-lease-time 600;
 max-lease-time 7200;
 <% node.interfaces(:role => :internal).each do |interface| -%>
@@ -12,6 +14,17 @@ subnet <%= interface[:network] %> netmask <%= interface[:netmask] %> {
   option domain-name "<%= @domain %>";
   option domain-name-servers <%= interface[:gateway] %>;
   option ntp-servers <%= node[:ntp][:servers].first %>;
+
+  class "pxeclients" {
+    match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
+    next-server <%= interface[:gateway] %>;
+
+    if option architecture-type = 00:07 {
+      filename "netboot.xyz.efi";
+    } else {
+      filename "netboot.xyz.kpxe";
+    }
+  }
 }
 <% end -%>