Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Added PXE UEFI docs
closes GH-719
  • Loading branch information
lzap authored and mmoll committed Nov 4, 2016
1 parent cbeee1f commit 843a6b4
Showing 1 changed file with 41 additions and 4 deletions.
45 changes: 41 additions & 4 deletions _includes/manuals/1.13/4.4.3_prov_templates.md
Expand Up @@ -5,14 +5,14 @@ Foreman comes with pre-created templates for the more common OSs, but you will n

#### Template Kinds

There are 6 template kinds:
There are several template kinds:

* PXELinux - Deployed to the TFTP server to ensure the Host boots the correct installer with the correct kernel options
* PXELinux, PXEGrub, PXEGrub2 - Deployed to the TFTP server to ensure the Host boots the correct installer with the correct kernel options (also referred to as PXE templates)
* Provision - The main unattended installation file; e.g. Kickstart or Preseed
* Finish - A post-install script used to take custom actions after the main provisioning is complete
* user_data - Similar to a Finish script, this can be assigned to hosts built on user_data-capable images (e.g. Openstack, EC2, etc)
* Script - An arbitrary script, not used by default, useful for certain custom tasks
* iPXE - Used in {g,i}PXE environments in place of PXELinux
* iPXE - Used in {g,i}PXE environments in place of PXELinux (do not confuse with PXE templates above)

In practice, most environments only make use of the first 3. The *Create Host* action deploys the PXELinux template to the TFTP server. The PXELinux template directs the host to retrieve the Provision template. The Provision template will direct the installer to retrieve and run the Finish template at the end of the install, and the Finish template will notify Foreman the build is complete just before reboot.

Expand All @@ -39,7 +39,9 @@ The final entry, Operating System default, can be set by editing the Operating S

##### Associating an Operating System default template

You will need to associate at least one PXELinux, Provision, and Finish template to your Operating System, and this must be done in two steps. First edit each of the templates, switch to the Association tab, and ensure the appropriate OSs are checked. Then edit the Operating System, switch to the Templates tab, and choose a default template for each template kind.
You will need to associate at least one PXE, Provision, and Finish template to your Operating System, and this must be done in two steps. First edit each of the templates, switch to the Association tab, and ensure the appropriate OSs are checked. Then edit the Operating System, switch to the Templates tab, and choose a default template for each template kind.

More than one PXE template can be associated. In this case, all associated PXE templates are deployed to the TFTP server and only one is picked up during provisioning according to the _PXE Loader_ setting (see below).

##### Templates Details
For image based installs there are two methods to customize and finish the installation. *Finish templates* and *User Data templates*:
Expand All @@ -49,3 +51,38 @@ Finish templates are available for all hypervisors that support image based inst

###### User Data Templates
User Data Templates are available for hypervisors that support customization via tools like *cloud-init*. In this case the installed machine does not need be reachable via ssh by the Foreman server. However, the installed must be able to reach Foreman or a Smart Proxy with the templates feature via http(s) to notify the setup has finished.

###### PXE Loader

When creating a new Host, the _PXE Loader_ option must be selected in order to pass
the correct DHCP filename option to the client. One option out of the following
must be chosen:

* PXELinux BIOS (loads `pxelinux.0` filename from TFTP)
* PXELinux UEFI (loads `pxelinux.efi` filename from TFTP)
* PXEGrub UEFI (loads `grub/bootx64.efi` filename from TFTP)
* PXEGrub UEFI SecureBoot (loads `grub/shim.efi` filename from TFTP)
* PXEGrub2 UEFI (loads `grub2/grubx64.efi` filename from TFTP)
* PXEGrub2 UEFI SecureBoot (loads `grub2/shim.efi` filename from TFTP)
* None - no filename passed (e.g. for HTTP booting via iPXE)

Grub filenames are different for each individual architecture associated with
the Host:

* `grub/bootia32.efi` (for Intel named \"i\*86\" where \* can be any character)
* `grub/bootx64.efi` (for Intel named \"x86-64\")
* `grub2/grubia32.efi` (for Intel named \"i\*86\" where \* can be any character)
* `grub2/grubx64.efi` (for Intel named \"x86-64\")
* `grub2/grubaa64.efi` (for ARM 64 named either \"aa64\" or \"aarch64\")
* `grub2/grubppc64.efi` (for IBM POWER named \"ppc64")
* `grub2/grubppc64le.efi` (for IBM POWER Little Endian named \"ppc64le\")
* `grub2/grubXYZ.efi` (for arbitrary Architecture named \"XYZ\")

Foreman installer only installs `pxelinux.0` and `grub2/grubx64.efi` (if grub2
is available). In order to boot systems via other loaders like PXELinux EFI or
Grub 1 (legacy), deploy the required bootloader files in the TFTP directory.

Some operating systems use a "shim" loader for SecureBoot (e.g. Red Hat
Enterprise Linux and clones). To use SecureBoot with an operating system that
does not use a shim chainloader, make a copy of the signed EFI loader named
`shim.efi` or make a symlink in order to do secure boot.

0 comments on commit 843a6b4

Please sign in to comment.