Warning message

Log in to add comments.

Supported hardware for Satellite 6 Bootdisk plugin

Lukas Zapletal published on 2015-12-15T12:45:03+00:00, last updated 2015-12-15T13:36:42+00:00

Bootdisk plugin enables Satellite users to download Host based or Generic host images. These are small ISO images pre-loaded with SYSLINUX which chainloads iPXE. The iPXE firmware is able to load kernels via HTTP, but since there is no PXE (UNDI) involved, hardware iPXE driver must exist for this to work. Unfortunately, not all network cards will work with iPXE, therefore the host-based images cannot be used.

The Host image embeds network credentials (IP, gateway, netmask, DNS) therefore DHCP is not required but the host can only be used with the host it belongs to. Once the host exits the Build mode, the bootdisk image will no longer work due to invalidated provisioning token. On the other hand, Generic image initializes network via DHCP and can be used with any host. The next errata for Satellite (6.1.6) will bring additional image (Subnet) which will be essentially Generic image, but proxied via Smart Proxy Templates plugin running on a Capsule.

Some network cards are not detected by iPXE at all, some may fail during downloading of kernel or init RAM disk. This can also happen on hypervisors like VMWare or Microsoft Hyper-V with particular emulated drivers.

Solution

There is a special kind of image -- Full host image. This one is also a host-based image and requires DHCP. It contains SYSLINUX loader, configuration rendered from PXELinux template kind associated with the host and embedded Linux kernel and init RAM disk of the associated OS installer. The image is slightly bigger, but it works on most platforms as there is no PXE-booting involved and the initial network configuration is done directly by the OS installer (e.g. Anaconda from RHEL).

Although this image type requires DHCP, it is possible to use the full host image with static network credentials. Create the following PXELinux kind template and associate it with the OS/Host:

<%
  mac = @host.mac
  bootif = '00-' + mac.gsub(':', '-') if mac
  ip = @host.ip
  mask = @host.subnet.mask
  gw = @host.subnet.gateway
  dns = @host.subnet.dns_primary
-%>
DEFAULT linux
LABEL linux
KERNEL <%= @kernel %>
<% if (@host.operatingsystem.name == 'Fedora' and @host.operatingsystem.major.to_i > 16) or
    (@host.operatingsystem.name != 'Fedora' and @host.operatingsystem.major.to_i >= 7) -%>
APPEND initrd=<%= @initrd %> ks=<%= foreman_url('provision') + "&static=yes" %> inst.ks.sendmac <%= "ip=#{ip}::#{gw}:#{mask}:::none nameserver=#{dns} ksdevice=bootif BOOTIF=#{bootif}" %>
<% else -%>
APPEND initrd=<%= @initrd %> ks=<%= foreman_url('provision') + "&static=yes" %> kssendmac <%= "ip=#{ip} netmask=#{mask} gateway=#{gw} dns=#{dns} ksdevice=#{mac} BOOTIF=#{bootif}" %>
<% end -%>

Full host image generated for the host will contains static IP information and therefore work on DHCP-less and PXE-less network. This can be used as a workaround for non-supported hardware that will not work with iPXE-based Host image or Generic or Subnet images.

This workaround only works in scenarios where host-based images can be used. An alternative approach with PXE-less discovery will be covered in this blog post.

English

About The Author

Lukas Zapletal's picture Red Hat Expert 971 points

Lukas Zapletal

Satellite 6 engineering.