The geekoops-next ansible role makes it easy to setup your own PXE boot server. It configures
dnsmasq to run a DHCP and TFTP server, from which your PXE clients can boot from. You can turn the DNS functionality of
dnsmasq off, so that it is possible to run this PXE server next to another DNS server on the same host.
This role also extracts a minimum
syslinux installation into your tftp directory. So, after deploying this role, your clients should be able to boot from this PXE server, but it appears empty.
Currently this role only supports legacy boot.
The following playbook installs this PXE boot server on
jellyfish. However we want to use another dhcp server for handing out the leases, so that we configure
dnsmasq to act as proxy. This is useful if you want to run your PXE server alongside another DHCP server, like for example in a network configuration where your Fritzbox takes care of the DHCP. Our example is in a
libvirt environment, so we let the default
libvirt DHCP server (192.168.122.1) handle dhcp:
- hosts: jellyfish roles: - role: geekoops-next vars: config_firewall: true firewall_zone: "public" dhcp_range: "192.168.122.1,proxy,255.255.255.0" prompt: "My awesome network boot server"
jellyfish runs as virtual machine in your default
libvirt domain, you can now create a new virtual machine that boots from the network.
virt-manager, create a new Virtual machine, with “Manual Boot”. Use any Linux system, even “Generic OS” just works fine. We don’t need a disk for booting, so that one can be deselected. Now, if you boot the machine, you will see the boot menu from the PXE server