configure-pxe.rst (ironic-17.0.2) | : | configure-pxe.rst (ironic-17.0.3) | ||
---|---|---|---|---|
skipping to change at line 60 | skipping to change at line 60 | |||
sudo mkdir -p /tftpboot | sudo mkdir -p /tftpboot | |||
sudo chown -R ironic /tftpboot | sudo chown -R ironic /tftpboot | |||
#. Install tftp server: | #. Install tftp server: | |||
Ubuntu:: | Ubuntu:: | |||
sudo apt-get install xinetd tftpd-hpa | sudo apt-get install xinetd tftpd-hpa | |||
RHEL7/CentOS7:: | RHEL8/CentOS8/Fedora:: | |||
sudo yum install tftp-server xinetd | ||||
Fedora:: | ||||
sudo dnf install tftp-server xinetd | sudo dnf install tftp-server xinetd | |||
SUSE:: | SUSE:: | |||
sudo zypper install tftp xinetd | sudo zypper install tftp xinetd | |||
#. Using xinetd to provide a tftp server setup to serve ``/tftpboot``. | #. Using xinetd to provide a tftp server setup to serve ``/tftpboot``. | |||
Create or edit ``/etc/xinetd.d/tftp`` as below:: | Create or edit ``/etc/xinetd.d/tftp`` as below:: | |||
skipping to change at line 96 | skipping to change at line 92 | |||
# IPv6 endpoint, if IPv4 flag is not used. | # IPv6 endpoint, if IPv4 flag is not used. | |||
flags = IPv4 | flags = IPv4 | |||
} | } | |||
and restart the ``xinetd`` service: | and restart the ``xinetd`` service: | |||
Ubuntu:: | Ubuntu:: | |||
sudo service xinetd restart | sudo service xinetd restart | |||
Fedora/RHEL7/CentOS7/SUSE:: | Fedora/RHEL8/CentOS8/SUSE:: | |||
sudo systemctl restart xinetd | sudo systemctl restart xinetd | |||
.. note:: | .. note:: | |||
In certain environments the network's MTU may cause TFTP UDP packets to get | In certain environments the network's MTU may cause TFTP UDP packets to get | |||
fragmented. Certain PXE firmwares struggle to reconstruct the fragmented | fragmented. Certain PXE firmwares struggle to reconstruct the fragmented | |||
packets which can cause significant slow down or even prevent the server | packets which can cause significant slow down or even prevent the server | |||
from PXE booting. In order to avoid this, TFTPd provides an option to limit | from PXE booting. In order to avoid this, TFTPd provides an option to limit | |||
the packet size so that it they do not get fragmented. To set this | the packet size so that it they do not get fragmented. To set this | |||
skipping to change at line 133 | skipping to change at line 129 | |||
In order to deploy instances with PXE on bare metal nodes which support | In order to deploy instances with PXE on bare metal nodes which support | |||
UEFI, perform these additional steps on the ironic conductor node to configure | UEFI, perform these additional steps on the ironic conductor node to configure | |||
the PXE UEFI environment. | the PXE UEFI environment. | |||
#. Install Grub2 and shim packages: | #. Install Grub2 and shim packages: | |||
Ubuntu (16.04LTS and later):: | Ubuntu (16.04LTS and later):: | |||
sudo apt-get install grub-efi-amd64-signed shim-signed | sudo apt-get install grub-efi-amd64-signed shim-signed | |||
RHEL7/CentOS7:: | RHEL8/CentOS8/Fedora:: | |||
sudo yum install grub2-efi shim | ||||
Fedora:: | ||||
sudo dnf install grub2-efi shim | sudo dnf install grub2-efi shim | |||
SUSE:: | SUSE:: | |||
sudo zypper install grub2-x86_64-efi shim | sudo zypper install grub2-x86_64-efi shim | |||
#. Copy grub and shim boot loader images to ``/tftpboot`` directory: | #. Copy grub and shim boot loader images to ``/tftpboot`` directory: | |||
Ubuntu (16.04LTS and later):: | Ubuntu (16.04LTS and later):: | |||
sudo cp /usr/lib/shim/shim.efi.signed /tftpboot/bootx64.efi | sudo cp /usr/lib/shim/shim.efi.signed /tftpboot/bootx64.efi | |||
sudo cp /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed /tftpboot/g rubx64.efi | sudo cp /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed /tftpboot/g rubx64.efi | |||
Fedora:: | Fedora:: | |||
sudo cp /boot/efi/EFI/fedora/shim.efi /tftpboot/bootx64.efi | sudo cp /boot/efi/EFI/fedora/shim.efi /tftpboot/bootx64.efi | |||
sudo cp /boot/efi/EFI/fedora/grubx64.efi /tftpboot/grubx64.efi | sudo cp /boot/efi/EFI/fedora/grubx64.efi /tftpboot/grubx64.efi | |||
RHEL7/CentOS7:: | RHEL8/CentOS8:: | |||
sudo cp /boot/efi/EFI/centos/shim.efi /tftpboot/bootx64.efi | sudo cp /boot/efi/EFI/centos/shim.efi /tftpboot/bootx64.efi | |||
sudo cp /boot/efi/EFI/centos/grubx64.efi /tftpboot/grubx64.efi | sudo cp /boot/efi/EFI/centos/grubx64.efi /tftpboot/grubx64.efi | |||
SUSE:: | SUSE:: | |||
sudo cp /usr/lib64/efi/shim.efi /tftpboot/bootx64.efi | sudo cp /usr/lib64/efi/shim.efi /tftpboot/bootx64.efi | |||
sudo cp /usr/lib/grub2/x86_64-efi/grub.efi /tftpboot/grubx64.efi | sudo cp /usr/lib/grub2/x86_64-efi/grub.efi /tftpboot/grubx64.efi | |||
#. Create master grub.cfg: | #. Create master grub.cfg: | |||
Ubuntu: Create grub.cfg under ``/tftpboot/grub`` directory:: | Ubuntu: Create grub.cfg under ``/tftpboot/grub`` directory:: | |||
GRUB_DIR=/tftpboot/grub | GRUB_DIR=/tftpboot/grub | |||
Fedora: Create grub.cfg under ``/tftpboot/EFI/fedora`` directory:: | Fedora: Create grub.cfg under ``/tftpboot/EFI/fedora`` directory:: | |||
GRUB_DIR=/tftpboot/EFI/fedora | GRUB_DIR=/tftpboot/EFI/fedora | |||
RHEL7/CentOS7: Create grub.cfg under ``/tftpboot/EFI/centos`` directory:: | RHEL8/CentOS8: Create grub.cfg under ``/tftpboot/EFI/centos`` directory:: | |||
GRUB_DIR=/tftpboot/EFI/centos | GRUB_DIR=/tftpboot/EFI/centos | |||
SUSE: Create grub.cfg under ``/tftpboot/boot/grub`` directory:: | SUSE: Create grub.cfg under ``/tftpboot/boot/grub`` directory:: | |||
GRUB_DIR=/tftpboot/boot/grub | GRUB_DIR=/tftpboot/boot/grub | |||
Create directory ``GRUB_DIR``:: | Create directory ``GRUB_DIR``:: | |||
sudo mkdir -p $GRUB_DIR | sudo mkdir -p $GRUB_DIR | |||
skipping to change at line 223 | skipping to change at line 215 | |||
In order to deploy instances with PXE on bare metal using Legacy BIOS boot | In order to deploy instances with PXE on bare metal using Legacy BIOS boot | |||
mode, perform these additional steps on the ironic conductor node. | mode, perform these additional steps on the ironic conductor node. | |||
#. Install the syslinux package with the PXE boot images: | #. Install the syslinux package with the PXE boot images: | |||
Ubuntu (16.04LTS and later):: | Ubuntu (16.04LTS and later):: | |||
sudo apt-get install syslinux-common pxelinux | sudo apt-get install syslinux-common pxelinux | |||
RHEL7/CentOS7:: | RHEL8/CentOS8/Fedora:: | |||
sudo yum install syslinux-tftpboot | ||||
Fedora:: | ||||
sudo dnf install syslinux-tftpboot | sudo dnf install syslinux-tftpboot | |||
SUSE:: | SUSE:: | |||
sudo zypper install syslinux | sudo zypper install syslinux | |||
#. Copy the PXE image to ``/tftpboot``. The PXE image might be found at [1]_: | #. Copy the PXE image to ``/tftpboot``. The PXE image might be found at [1]_: | |||
Ubuntu (16.04LTS and later):: | Ubuntu (16.04LTS and later):: | |||
sudo cp /usr/lib/PXELINUX/pxelinux.0 /tftpboot | sudo cp /usr/lib/PXELINUX/pxelinux.0 /tftpboot | |||
RHEL7/CentOS7/SUSE:: | RHEL8/CentOS8/SUSE:: | |||
sudo cp /usr/share/syslinux/pxelinux.0 /tftpboot | sudo cp /usr/share/syslinux/pxelinux.0 /tftpboot | |||
#. If whole disk images need to be deployed via PXE-netboot, copy the | #. If whole disk images need to be deployed via PXE-netboot, copy the | |||
chain.c32 image to ``/tftpboot`` to support it: | chain.c32 image to ``/tftpboot`` to support it: | |||
Ubuntu (16.04LTS and later):: | Ubuntu (16.04LTS and later):: | |||
sudo cp /usr/lib/syslinux/modules/bios/chain.c32 /tftpboot | sudo cp /usr/lib/syslinux/modules/bios/chain.c32 /tftpboot | |||
Fedora:: | Fedora:: | |||
sudo cp /boot/extlinux/chain.c32 /tftpboot | sudo cp /boot/extlinux/chain.c32 /tftpboot | |||
RHEL7/CentOS7/SUSE:: | RHEL8/CentOS8/SUSE:: | |||
sudo cp /usr/share/syslinux/chain.c32 /tftpboot/ | sudo cp /usr/share/syslinux/chain.c32 /tftpboot/ | |||
#. If the version of syslinux is **greater than** 4 we also need to make sure | #. If the version of syslinux is **greater than** 4 we also need to make sure | |||
that we copy the library modules into the ``/tftpboot`` directory [2]_ | that we copy the library modules into the ``/tftpboot`` directory [2]_ | |||
[1]_. For example, for Ubuntu run:: | [1]_. For example, for Ubuntu run:: | |||
sudo cp /usr/lib/syslinux/modules/*/ldlinux.* /tftpboot | sudo cp /usr/lib/syslinux/modules/*/ldlinux.* /tftpboot | |||
#. Update the bare metal node with ``boot_mode:bios`` capability in | #. Update the bare metal node with ``boot_mode:bios`` capability in | |||
skipping to change at line 340 | skipping to change at line 328 | |||
http_url=http://192.168.0.2:8080 | http_url=http://192.168.0.2:8080 | |||
See also: :ref:`l3-external-ip`. | See also: :ref:`l3-external-ip`. | |||
#. Install the iPXE package with the boot images: | #. Install the iPXE package with the boot images: | |||
Ubuntu:: | Ubuntu:: | |||
apt-get install ipxe | apt-get install ipxe | |||
RHEL7/CentOS7:: | RHEL8/CentOS8/Fedora:: | |||
yum install ipxe-bootimgs | ||||
Fedora:: | ||||
dnf install ipxe-bootimgs | dnf install ipxe-bootimgs | |||
.. note:: | .. note:: | |||
SUSE does not provide a package containing iPXE boot images. If you are | SUSE does not provide a package containing iPXE boot images. If you are | |||
using SUSE or if the packaged version of the iPXE boot image doesn't | using SUSE or if the packaged version of the iPXE boot image doesn't | |||
work, you can download a prebuilt one from http://boot.ipxe.org or build | work, you can download a prebuilt one from http://boot.ipxe.org or build | |||
one image from source, see http://ipxe.org/download for more information. | one image from source, see http://ipxe.org/download for more information. | |||
#. Copy the iPXE boot image (``undionly.kpxe`` for **BIOS** and | #. Copy the iPXE boot image (``undionly.kpxe`` for **BIOS** and | |||
``ipxe.efi`` for **UEFI**) to ``/tftpboot``. The binary might | ``ipxe.efi`` for **UEFI**) to ``/tftpboot``. The binary might | |||
be found at: | be found at: | |||
Ubuntu:: | Ubuntu:: | |||
cp /usr/lib/ipxe/{undionly.kpxe,ipxe.efi,snponly.efi} /tftpboot | cp /usr/lib/ipxe/{undionly.kpxe,ipxe.efi,snponly.efi} /tftpboot | |||
Fedora/RHEL7/CentOS7:: | Fedora/RHEL8/CentOS8:: | |||
cp /usr/share/ipxe/{undionly.kpxe,ipxe.efi,snponly.efi} /tftpboot | cp /usr/share/ipxe/{undionly.kpxe,ipxe.efi,snponly.efi} /tftpboot | |||
#. Enable/Configure iPXE overrides in the Bare Metal Service's configuration | #. Enable/Configure iPXE overrides in the Bare Metal Service's configuration | |||
file **if required** (/etc/ironic/ironic.conf): | file **if required** (/etc/ironic/ironic.conf): | |||
.. code-block:: ini | .. code-block:: ini | |||
[pxe] | [pxe] | |||
skipping to change at line 455 | skipping to change at line 439 | |||
(as it will serve iPXE boot script and boot configuration files for nodes), | (as it will serve iPXE boot script and boot configuration files for nodes), | |||
such configuration will shift some load from ironic-conductor hosts | such configuration will shift some load from ironic-conductor hosts | |||
to the Object Storage service which can be scaled horizontally. | to the Object Storage service which can be scaled horizontally. | |||
Note that when SSL is enabled on the Object Storage service | Note that when SSL is enabled on the Object Storage service | |||
you have to ensure that iPXE firmware on the nodes can indeed | you have to ensure that iPXE firmware on the nodes can indeed | |||
boot from generated temporary URLs that use HTTPS protocol. | boot from generated temporary URLs that use HTTPS protocol. | |||
#. Restart the ``ironic-conductor`` process: | #. Restart the ``ironic-conductor`` process: | |||
Fedora/RHEL7/CentOS7/SUSE:: | Fedora/RHEL8/CentOS8/SUSE:: | |||
sudo systemctl restart openstack-ironic-conductor | sudo systemctl restart openstack-ironic-conductor | |||
Ubuntu:: | Ubuntu:: | |||
sudo service ironic-conductor restart | sudo service ironic-conductor restart | |||
PXE multi-architecture setup | PXE multi-architecture setup | |||
---------------------------- | ---------------------------- | |||
End of changes. 11 change blocks. | ||||
27 lines changed or deleted | 11 lines changed or added |