[2.6] bootloaders not set in DHCP for relayed vlans

Bug #1836276 reported by Adam Beeman on 2019-07-11
This bug affects 1 person
Affects Status Importance Assigned to Milestone

Bug Description

In 2.5 and earlier releases, there was a global stanza for boot loaders in the generated dhcpd.conf file.

In 2.6, this seems to have moved to a per-subnet configuration, but the template in src/provisioningserver/templates/dhcp/dhcpd.conf.template (and dhcpd6.conf.template) now only includes the bootloader stanza for subnets which have dhcp_subnet['bootloader'] defined.

In my production environment, I'm using DHCP relaying and DHCP helper so that I can PXE boot servers which live on a vlan which doesn't have a rack controller directly on it. So this means that only subnets with a rack controller directly on it will send a DHCP response that includes a boot filename to download.

I am working around this issue by creating a global snippet which contains:
# BEGIN bootloader workaround snippet
# Bootloaders
if option arch = 00:00 {
    # pxe
    filename "pxelinux.0";
} elsif option arch = 00:07 {
    # uefi_amd64
    filename "bootx64.efi";
} elsif option arch = 00:09 {
    # uefi_amd64
    filename "bootx64.efi";
} elsif option arch = 00:0B {
    # uefi_arm64
    filename "grubaa64.efi";
} elsif option arch = 00:0C {
    # open-firmware_ppc64el
    filename "bootppc64.bin";
} elsif option arch = 00:0E {
    # powernv
    filename "pxelinux.0";
    option path-prefix "ppc64el/";
} else {
    # pxe
    filename "pxelinux.0";
# END bootloader workaround snippet

To reproduce this issue:
Create a new fabric ("demo"), then create a new subnet on that fabric. Select the untagged vlan for the new fabric and choose to enable DHCP. Select "Relay to another VLAN" and choose another vlan which has a live rack controller on it. After saving this, check out /var/lib/maas/dhcpd.conf; you will see that the above bootloaders snippet is included only within the shared-network stanzas for vlans which have rack controllers directly on them.

Here's the package set I'm running:
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
un maas <none> <none> (no description available)
ii maas-cli 2.6.0-7802-g59416a869-0ubuntu1~18.04.1 all MAAS client and command-line interface
un maas-cluster-controller <none> <none> (no description available)
ii maas-common 2.6.0-7802-g59416a869-0ubuntu1~18.04.1 all MAAS server common files
ii maas-dhcp 2.6.0-7802-g59416a869-0ubuntu1~18.04.1 all MAAS DHCP server
un maas-dns <none> <none> (no description available)
ii maas-proxy 2.6.0-7802-g59416a869-0ubuntu1~18.04.1 all MAAS Caching Proxy
ii maas-rack-controller 2.6.0-7802-g59416a869-0ubuntu1~18.04.1 all Rack Controller for MAAS
ii maas-region-api 2.6.0-7802-g59416a869-0ubuntu1~18.04.1 all Region controller API service for MAAS
ii maas-region-controller 2.6.0-7802-g59416a869-0ubuntu1~18.04.1 all Region Controller for MAAS
un maas-region-controller-min <none> <none> (no description available)
un python-django-maas <none> <none> (no description available)
un python-maas-client <none> <none> (no description available)
un python-maas-provisioningserver <none> <none> (no description available)
ii python3-django-maas 2.6.0-7802-g59416a869-0ubuntu1~18.04.1 all MAAS server Django web framework (Python 3)
ii python3-maas-client 2.6.0-7802-g59416a869-0ubuntu1~18.04.1 all MAAS python API client (Python 3)
ii python3-maas-provisioningserver 2.6.0-7802-g59416a869-0ubuntu1~18.04.1 all MAAS server provisioning libraries (Python 3)

I don't think you really need all my log files to further diagnose this.

Adam Beeman (abeeman) wrote :

One more thing, for those who are experiencing this and may be searching for the error message - the symptoms of DHCP not replying with a boot filename is this error message: "PXE-E53: No boot filename received".

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers