diff options
author | Julia Kreger <juliaashleykreger@gmail.com> | 2020-05-14 17:43:08 -0700 |
---|---|---|
committer | Julia Kreger <juliaashleykreger@gmail.com> | 2020-07-07 12:38:33 -0700 |
commit | 5f7d84f483be165fde04954453e156ceefc43d28 (patch) | |
tree | a6f4415ca23b77392af6cf3037d0fcc3f13d2f1e /devstack | |
parent | 36ea661bfca3db9454f6d8927ac2cf346087696b (diff) | |
download | ironic-5f7d84f483be165fde04954453e156ceefc43d28.tar.gz |
Provide a path to set explicit ipxe bootloaders
I did something stupid when started driving forth the split of ipxe
from the pxe interface: I didn't think about the need to actually
separate bootloaders. In part, because the use case was a mixed
Power8/Power9 and x86 cluster. Mainly because the Power hardware
does not honor or care about the bootfile name provided over DHCP.
The firmware knows how to read the PXELINUX boot file format
and the machines are able to boot from there.
Where this all goes sideways is when:
* Enabled boot interfaces are set to ipxe,pxe
* No default boot interface is set
* Node is created without a default for x86 hardware.
* Node uses ipxe boot_interface, and creates files under /httpboot
* bootfile transmitted via DHCP is pxelinux.0.
Fun right?
The simple workaround for the power user is to just define the iPXE
loader, or maybe use UEFI. But that is neither here nor there, this
is still a bug and a possible use case is GRUB2 via PXE and iPXE.
Not that would really work via ipxe, but hopefully people get the
idea.
The solution kind of seems clear, duplicate configuration and
fallback if not defined.
Story: #2007003
Task: #40282
Change-Id: I4419254c23095929e52a0fda11789f2f5167dc6b
Diffstat (limited to 'devstack')
-rw-r--r-- | devstack/lib/ironic | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/devstack/lib/ironic b/devstack/lib/ironic index a4d5fc07c..e3285b048 100644 --- a/devstack/lib/ironic +++ b/devstack/lib/ironic @@ -1691,10 +1691,8 @@ function configure_ironic_conductor { local pxebin pxebin=`basename $IRONIC_PXE_BOOT_IMAGE` uefipxebin=`basename $(get_uefi_ipxe_boot_file)` - iniset $IRONIC_CONF_FILE pxe pxe_config_template '$pybasedir/drivers/modules/ipxe_config.template' - iniset $IRONIC_CONF_FILE pxe pxe_bootfile_name $pxebin - iniset $IRONIC_CONF_FILE pxe uefi_pxe_config_template '$pybasedir/drivers/modules/ipxe_config.template' - iniset $IRONIC_CONF_FILE pxe uefi_pxe_bootfile_name $uefipxebin + iniset $IRONIC_CONF_FILE pxe ipxe_bootfile_name $pxebin + iniset $IRONIC_CONF_FILE pxe uefi_ipxe_bootfile_name $uefipxebin iniset $IRONIC_CONF_FILE deploy http_root $IRONIC_HTTP_DIR iniset $IRONIC_CONF_FILE deploy http_url "http://$([[ $IRONIC_HTTP_SERVER =~ : ]] && echo "[$IRONIC_HTTP_SERVER]" || echo $IRONIC_HTTP_SERVER):$IRONIC_HTTP_PORT" if [[ "$IRONIC_IPXE_USE_SWIFT" == "True" ]]; then |