Promote iPXE to separate boot interface
This new boot interface should use "dynamic iPXE configuration" exclusively. Such move should eventually allow to not force PXE vs iPXE per-conductor, and simplify code base. Change-Id: I0c93cca9c777c1bdd0a6b0a0890a7854ef7ffb78 Related-Bug: #1628069
This commit is contained in:
parent
7ae6184c31
commit
5d636efca6
|
@ -0,0 +1,208 @@
|
|||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
=======================================
|
||||
Promote iPXE to separate boot interface
|
||||
=======================================
|
||||
|
||||
https://bugs.launchpad.net/ironic/+bug/1628069
|
||||
|
||||
The iPXE boot should be promoted to a separate boot driver interface.
|
||||
This will simplify the code base and allow to not force global PXE *vs* iPXE
|
||||
conductor setting.
|
||||
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
Currently setting PXE or iPXE is enforced per-conductor, and taking
|
||||
into account the possibility of node take-over, this choice is effectively
|
||||
global for the whole Ironic installation.
|
||||
|
||||
Due to this the current code of ``PXEBoot`` interface is riddled
|
||||
with constructs of:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
if CONF.pxe.ixpe_enabled ...
|
||||
|
||||
Recently added or proposed changes (like ``CONF.pxe.ipxe_use_swift`` option)
|
||||
make the logic there even more complicated.
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
It is proposed to implement a separate iPXE boot interface,
|
||||
which will use the new way of serving iPXE boot scripts and boot config files
|
||||
directly from Ironic API as outlined in `dynamic iPXE configuration`_ spec.
|
||||
|
||||
The new interface will get a separate ``[ipxe]`` config section,
|
||||
where all ``[pxe]ipxe_*`` options should be moved following proper deprecation
|
||||
policy for config options.
|
||||
Current iPXE-related behavior of ``PXEBoot`` interface should
|
||||
be deprecated and eventually removed.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
Continue mixing PXE and iPXE in single driver interface
|
||||
and setting iPXE *vs* PXE globally.
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
None
|
||||
|
||||
State Machine Impact
|
||||
--------------------
|
||||
|
||||
None
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
Client (CLI) impact
|
||||
-------------------
|
||||
|
||||
None
|
||||
|
||||
"ironic" CLI
|
||||
~~~~~~~~~~~~
|
||||
|
||||
None
|
||||
|
||||
"openstack baremetal" CLI
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
None
|
||||
|
||||
RPC API impact
|
||||
--------------
|
||||
|
||||
None
|
||||
|
||||
Driver API impact
|
||||
-----------------
|
||||
|
||||
None
|
||||
|
||||
Nova driver impact
|
||||
------------------
|
||||
|
||||
None
|
||||
|
||||
Ramdisk impact
|
||||
--------------
|
||||
|
||||
None
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Scalability impact
|
||||
------------------
|
||||
|
||||
None
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
None
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
* A new config section ``[ipxe]`` will be added, with most of the
|
||||
ipxe_* options copied from current ``[pxe]`` section (with ``ipxe_`` removed
|
||||
from option names).
|
||||
By the virtue of ``oslo_config`` library, the new options will be backward
|
||||
compatible with old, deprecated ones, using their values when not set
|
||||
explicitly.
|
||||
|
||||
* This change has no immediate effect. Enabling it is a conscious choice of
|
||||
the operator:
|
||||
|
||||
+ a driver utilizing this new ``iPXEBoot`` boot interface must be composed
|
||||
+ such driver must be assigned to the node
|
||||
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
pshchelo (Pavlo Shchelokovskyy)
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
* create a new ``iPXEBoot`` boot interface
|
||||
|
||||
- identify and refactor code that is common for ``PXEBoot`` and
|
||||
``iPXEBoot`` interfaces
|
||||
|
||||
* register this driver as entry point for ``ironic.hardware.interfaces.boot``
|
||||
|
||||
- add it to list of boot interfaces enabled by default in ironic config
|
||||
(``[DEFAULT]enabled_boot_interfaces`` config option)
|
||||
|
||||
* add appropriate documentation
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
* `Dynamic iPXE configuration`_
|
||||
* `Driver composition reform`_
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
No specific coverage seems to be needed apart from enabling a driver that
|
||||
uses this new proposed boot interface at least on one gate job.
|
||||
|
||||
Upgrades and Backwards Compatibility
|
||||
====================================
|
||||
|
||||
The feature has no immediate effect on existing installation as it must
|
||||
be manually enabled first by enabling the interface and composing an
|
||||
appropriate driver with this boot interface.
|
||||
|
||||
Existing drivers do not depend on this feature in any way.
|
||||
|
||||
It is also proposed to deprecate and eventually remove iPXE capabilities
|
||||
from the PXEBoot interface.
|
||||
|
||||
Chain-loading an iPXE-capable boot-loader will still be supported by
|
||||
iPXEBoot driver to support older/dumber/buggy hardware.
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
Document new driver interface and its usage.
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
.. _dynamic iPXE configuration: http://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/ipxe-dynamic-config.html
|
||||
.. _Driver composition reform: http://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/driver-composition-reform.html
|
|
@ -0,0 +1 @@
|
|||
../approved/ipxe-boot-interface.rst
|
Loading…
Reference in New Issue