summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/source/deploy/install-guide.rst56
-rw-r--r--etc/ironic/ironic.conf.sample4
-rw-r--r--ironic/conf/pxe.py4
-rw-r--r--ironic/tests/unit/common/test_pxe_utils.py14
-rw-r--r--releasenotes/notes/uefi-grub2-by-default-6b797a9e690d2dd5.yaml7
5 files changed, 55 insertions, 30 deletions
diff --git a/doc/source/deploy/install-guide.rst b/doc/source/deploy/install-guide.rst
index 1ed12d8b8..6b1d10d95 100644
--- a/doc/source/deploy/install-guide.rst
+++ b/doc/source/deploy/install-guide.rst
@@ -968,17 +968,7 @@ PXE UEFI setup
If you want to deploy on a UEFI supported bare metal, perform these additional
steps on the ironic conductor node to configure the PXE UEFI environment.
-#. Download and untar the elilo bootloader version >= 3.16 from
- http://sourceforge.net/projects/elilo/::
-
- sudo tar zxvf elilo-3.16-all.tar.gz
-
-#. Copy the elilo boot loader image to ``/tftpboot`` directory::
-
- sudo cp ./elilo-3.16-x86_64.efi /tftpboot/elilo.efi
-
-#. Grub2 is an alternate UEFI bootloader supported in Bare Metal service.
- Install grub2 and shim packages::
+#. Install Grub2 and shim packages::
Ubuntu: (14.04LTS and later)
sudo apt-get install grub-efi-amd64-signed shim-signed
@@ -1028,18 +1018,6 @@ steps on the ironic conductor node to configure the PXE UEFI environment.
sudo chmod 644 $GRUB_DIR/grub.cfg
-#. Update bootfile and template file configuration parameters for UEFI PXE boot
- in the Bare Metal Service's configuration file (/etc/ironic/ironic.conf)::
-
- [pxe]
-
- # Bootfile DHCP parameter for UEFI boot mode. (string value)
- uefi_pxe_bootfile_name=bootx64.efi
-
- # Template file for PXE configuration for UEFI boot loader.
- # (string value)
- uefi_pxe_config_template=$pybasedir/drivers/modules/pxe_grub_config.template
-
#. Update the bare metal node with ``boot_mode`` capability in node's properties
field::
@@ -1052,7 +1030,37 @@ steps on the ironic conductor node to configure the PXE UEFI environment.
boot device on the bare metal node. So this step is not required for
``pxe_ilo`` driver.
-For more information on configuring boot modes, refer boot_mode_support_.
+.. note::
+ For more information on configuring boot modes, see boot_mode_support_.
+
+
+Elilo: an alternative to Grub2
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Elilo is a UEFI bootloader. It is an alternative to Grub2, although it
+isn't recommended since it is not being supported.
+
+#. Download and untar the elilo bootloader version >= 3.16 from
+ http://sourceforge.net/projects/elilo/::
+
+ sudo tar zxvf elilo-3.16-all.tar.gz
+
+#. Copy the elilo boot loader image to ``/tftpboot`` directory::
+
+ sudo cp ./elilo-3.16-x86_64.efi /tftpboot/elilo.efi
+
+#. Update bootfile and template file configuration parameters for UEFI
+ PXE boot in the Bare Metal Service's configuration file
+ (/etc/ironic/ironic.conf)::
+
+ [pxe]
+
+ # Bootfile DHCP parameter for UEFI boot mode. (string value)
+ uefi_pxe_bootfile_name=elilo.efi
+
+ # Template file for PXE configuration for UEFI boot loader.
+ # (string value)
+ uefi_pxe_config_template=$pybasedir/drivers/modules/elilo_efi_pxe_config.template
iPXE setup
diff --git a/etc/ironic/ironic.conf.sample b/etc/ironic/ironic.conf.sample
index 5a2815c0c..c8c8e3e5e 100644
--- a/etc/ironic/ironic.conf.sample
+++ b/etc/ironic/ironic.conf.sample
@@ -2721,7 +2721,7 @@
# On ironic-conductor node, template file for PXE
# configuration for UEFI boot loader. (string value)
-#uefi_pxe_config_template = $pybasedir/drivers/modules/elilo_efi_pxe_config.template
+#uefi_pxe_config_template = $pybasedir/drivers/modules/pxe_grub_config.template
# IP address of ironic-conductor node's TFTP server. (string
# value)
@@ -2740,7 +2740,7 @@
#pxe_bootfile_name = pxelinux.0
# Bootfile DHCP parameter for UEFI boot mode. (string value)
-#uefi_pxe_bootfile_name = elilo.efi
+#uefi_pxe_bootfile_name = bootx64.efi
# Enable iPXE boot. (boolean value)
#ipxe_enabled = false
diff --git a/ironic/conf/pxe.py b/ironic/conf/pxe.py
index 7e16724ec..22e6b0fc9 100644
--- a/ironic/conf/pxe.py
+++ b/ironic/conf/pxe.py
@@ -55,7 +55,7 @@ opts = [
cfg.StrOpt('uefi_pxe_config_template',
default=os.path.join(
'$pybasedir',
- 'drivers/modules/elilo_efi_pxe_config.template'),
+ 'drivers/modules/pxe_grub_config.template'),
help=_('On ironic-conductor node, template file for PXE '
'configuration for UEFI boot loader.')),
cfg.StrOpt('tftp_server',
@@ -77,7 +77,7 @@ opts = [
default='pxelinux.0',
help=_('Bootfile DHCP parameter.')),
cfg.StrOpt('uefi_pxe_bootfile_name',
- default='elilo.efi',
+ default='bootx64.efi',
help=_('Bootfile DHCP parameter for UEFI boot mode.')),
cfg.BoolOpt('ipxe_enabled',
default=False,
diff --git a/ironic/tests/unit/common/test_pxe_utils.py b/ironic/tests/unit/common/test_pxe_utils.py
index 5b4f4b207..e35992fb8 100644
--- a/ironic/tests/unit/common/test_pxe_utils.py
+++ b/ironic/tests/unit/common/test_pxe_utils.py
@@ -175,6 +175,11 @@ class TestPXEUtils(db_base.DbTestCase):
def test__build_elilo_config(self):
pxe_opts = self.pxe_options
pxe_opts['boot_mode'] = 'uefi'
+ self.config(
+ uefi_pxe_config_template=('ironic/drivers/modules/'
+ 'elilo_efi_pxe_config.template'),
+ group='pxe'
+ )
rendered_template = pxe_utils._build_pxe_config(
pxe_opts, CONF.pxe.uefi_pxe_config_template,
'{{ ROOT }}', '{{ DISK_IDENTIFIER }}')
@@ -189,9 +194,9 @@ class TestPXEUtils(db_base.DbTestCase):
pxe_opts = self.pxe_options
pxe_opts['boot_mode'] = 'uefi'
pxe_opts['tftp_server'] = '192.0.2.1'
- grub_tmplte = "ironic/drivers/modules/pxe_grub_config.template"
rendered_template = pxe_utils._build_pxe_config(
- pxe_opts, grub_tmplte, '(( ROOT ))', '(( DISK_IDENTIFIER ))')
+ pxe_opts, CONF.pxe.uefi_pxe_config_template,
+ '(( ROOT ))', '(( DISK_IDENTIFIER ))')
template_file = 'ironic/tests/unit/drivers/pxe_grub_config.template'
expected_template = open(template_file).read().rstrip()
@@ -335,6 +340,11 @@ class TestPXEUtils(db_base.DbTestCase):
@mock.patch('oslo_utils.fileutils.ensure_tree', autospec=True)
def test_create_pxe_config_uefi_elilo(self, ensure_tree_mock, build_mock,
write_mock, link_ip_configs_mock):
+ self.config(
+ uefi_pxe_config_template=('ironic/drivers/modules/'
+ 'elilo_efi_pxe_config.template'),
+ group='pxe'
+ )
build_mock.return_value = self.pxe_options_uefi
with task_manager.acquire(self.context, self.node.uuid) as task:
task.node.properties['capabilities'] = 'boot_mode:uefi'
diff --git a/releasenotes/notes/uefi-grub2-by-default-6b797a9e690d2dd5.yaml b/releasenotes/notes/uefi-grub2-by-default-6b797a9e690d2dd5.yaml
new file mode 100644
index 000000000..1d4aa978b
--- /dev/null
+++ b/releasenotes/notes/uefi-grub2-by-default-6b797a9e690d2dd5.yaml
@@ -0,0 +1,7 @@
+---
+upgrade:
+ - The default bootloader for PXE + UEFI has changed from ELILO to Grub2
+ because ELILO is not being actively developed anymore. Operators relying
+ on ELILO should explicitly set the ``[pxe]/uefi_pxe_bootfile_name``
+ and ``[pxe]/uefi_pxe_config_template`` configuration options to the
+ ELILO ROM and configuration template.