Clone this repo:


  1. 56b213a Further uefi and boot.ipxe fixes by Zack Williams · 7 weeks ago master
  2. d1ee626 Various fixes by Zack Williams · 3 months ago
  3. 4c06cf6 Fix galaxy role_name by Zack Williams · 6 months ago
  4. 92f3c20 Add additional OS installer images by Zack Williams · 12 months ago
  5. 6f70f4d Add the ability to pick preseed based on MAC address by Zack Williams · 1 year, 2 months ago


Configures PXE and iPXE related boot scripts and images on an web server.

Also creates preseed files used to automate OS installation.

See the ipxe-build repo for building iPXE payload images.

The iPXE boot.ipxe script:

  • Has a menu that reports system information and network status
  • Gives options for installation (interactive and autoinstall) and diagnostic tools (currently: memtest)
    • Alternate options to help debug or supply nonfree firmware
  • List of images in the iPXE menu is specified by the pxeboot_boot_images variable for customizing which tools are available.
  • By default, continues boot normally after 10 seconds

Also populates the kernel, initrd, and other files needed to network boot.

For fully automated installation, separate Debian/Ubuntu preseed files are created based on the serial number of the device (and possibly other criteria like MAC address in the future). Hosts are defined in the pxeboot_hosts list of dicts, which each have these keys:

  • domain: Domain extension for the host
  • hostname: Hostname of the system
  • iface: (optional) Network interface to use when setting up the system. This is primarily to work around this bug which can cause the wrong interface to be selected in the install process:
  • To allow iPXE to load a file specific to the hardware, one or both of these keys must be included:
    • serial: Device serial number, must match value given in SMBIOS
    • mac_address: MAC address of the network card, colon separated format

Documentation of the preseed process can be found in these links:

Some systems may need additional firmware to boot properly (for example, to initialize network cards), which can be supplied during boot as another cpio file:

Additional references:

iPXE script examples:

Example Playbook

- hosts: all
      - {domain: '', hostname: 'server1', serial: 'abc123'}
      - {domain: '', hostname: 'server2', serial: 'abc123', iface: 'eno2'}
    - pxeboot

License and Author

© 2020 Open Networking Foundation License: Apache-2.0