[2.6] bootloaders not set in DHCP for relayed vlans

Bug #1836276 reported by Adam Beeman
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MAAS
Fix Released
High
Blake Rouse
2.6
Fix Released
High
Blake Rouse

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:
Desired=Unknown/Install/Remove/Purge/Hold
| 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.

Related branches

Revision history for this message
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".

Changed in maas:
status: New → Triaged
importance: Undecided → High
milestone: none → 2.7.0alpha1
assignee: nobody → Blake Rouse (blake-rouse)
status: Triaged → In Progress
Changed in maas:
status: In Progress → Fix Committed
Changed in maas:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.