Chapter 1. Introduction to Provisioning

1.1. Provisioning Overview

Provisioning is a process that starts with a bare physical or virtual machine and ends with a fully configured, ready-to-use operating system. Using Red Hat Satellite, you can define and automate fine-grained provisioning for a large number of hosts.

There are many provisioning methods. For example, you can use Satellite Server’s integrated Capsule or an external Capsule Server to provision bare metal hosts using both PXE based and non-PXE based methods. You can also provision cloud instances from specific providers through their APIs. These provisioning methods are part of the Red Hat Satellite application life cycle to create, manage, and update hosts.

Red Hat Satellite has different methods for provisioning hosts:

Bare Metal Provisioning
Satellite provisions bare metal hosts primarily through PXE boot and MAC address identification. You can create host entries and specify the MAC address of the physical host to provision. You can also boot blank hosts to use Satellite’s discovery service, which creates a pool of ready-to-provision hosts.
Cloud Providers
Satellite connects to private and public cloud providers to provision instances of hosts from images that are stored with the Cloud environment. This also includes selecting which hardware profile or flavor to use.
Virtualization Infrastructure
Satellite connects to virtualization infrastructure services such as Red Hat Virtualization and VMware to provision virtual machines from virtual image templates or using the same PXE-based boot methods as bare metal providers.

1.2. Supported Cloud Providers

You can connect the following cloud providers as compute resources to Satellite:

  • Red Hat OpenStack Platform
  • Amazon EC2
  • Google Compute Engine
  • Microsoft Azure

1.3. Supported Virtualization Infrastructure

You can connect the following virtualization infrastructure as compute resources to Satellite:

  • KVM (libvirt)
  • Red Hat Virtualization (deprecated)
  • VMware
  • OpenShift Virtualization

1.4. Network Boot Provisioning Workflow

For physical or virtual BIOS hosts:

  1. Set the first booting device as boot configuration with network.
  2. Set the second booting device as boot from hard drive. Satellite manages TFTP boot configuration files so hosts can be easily provisioned just by rebooting.

For physical or virtual EFI hosts:

  1. Set the first booting device as boot configuration with network.
  2. Depending on the EFI firmware type and configuration, the OS installer typically configures the OS boot loader as the first entry.
  3. To reboot into installer again, use efibootmgr utility to switch back to boot from network.

The provisioning process follows a basic PXE workflow:

  1. You create a host and select a domain and subnet. Satellite requests an available IP address from the DHCP Capsule Server that is associated with the subnet or from the PostgreSQL database in Satellite. Satellite loads this IP address into the IP address field in the Create Host window. When you complete all the options for the new host, submit the new host request.
  2. Depending on the configuration specifications of the host and its domain and subnet, Satellite creates the following settings:

    • A DHCP record on Capsule Server that is associated with the subnet.
    • A forward DNS record on Capsule Server that is associated with the domain.
    • A reverse DNS record on the DNS Capsule Server that is associated with the subnet.
    • PXELinux, Grub, Grub2, and iPXE configuration files for the host in the TFTP Capsule Server that is associated with the subnet.
    • A Puppet certificate on the associated Puppet server.
    • A realm on the associated identity server.
  3. The host is configured to boot from the network as the first device and HDD as the second device.
  4. The new host requests a DHCP reservation from the DHCP server.
  5. The DHCP server responds to the reservation request and returns TFTP next-server and filename options.
  6. The host requests the boot loader and menu from the TFTP server according to the PXELoader setting.
  7. A boot loader is returned over TFTP.
  8. The boot loader fetches configuration for the host through its provisioning interface MAC address.
  9. The boot loader fetches the operating system installer kernel, init RAM disk, and boot parameters.
  10. The installer requests the provisioning template from Satellite.
  11. Satellite renders the provision template and returns the result to the host.
  12. The installer performs installation of the operating system.

    • The installer registers the host to Satellite using Subscription Manager.
    • The installer installs management tools such as katello-agent and puppet.
    • The installer notifies Satellite of a successful build in the postinstall script.
  13. The PXE configuration files revert to a local boot template.
  14. The host reboots.
  15. The new host requests a DHCP reservation from the DHCP server.
  16. The DHCP server responds to the reservation request and returns TFTP next-server and filename options.
  17. The host requests the bootloader and menu from the TFTP server according to the PXELoader setting.
  18. A boot loader is returned over TFTP.
  19. The boot loader fetches the configuration for the host through its provision interface MAC address.
  20. The boot loader initiates boot from the local drive.
  21. If you configured the host to use any Puppet classes, the host configures itself using the modules.

The fully provisioned host performs the following workflow:

  1. The host is configured to boot from the network as the first device and HDD as the second device.
  2. The new host requests a DHCP reservation from the DHCP server.
  3. The DHCP server responds to the reservation request and returns TFTP next-server and filename options.
  4. The host requests the boot loader and menu from the TFTP server according to the PXELoader setting.
  5. A boot loader is returned over TFTP.
  6. The boot loader fetches the configuration settings for the host through its provisioning interface MAC address.
  7. For BIOS hosts:

    • The boot loader returns non-bootable device so BIOS skips to the next device (boot from HDD).
  8. For EFI hosts:

    • The boot loader finds Grub2 on a ESP partition and chainboots it.
  9. If the host is unknown to Satellite, a default bootloader configuration is provided. When Discovery service is enabled, it boots into discovery, otherwise it boots from HDD.

This workflow differs depending on custom options. For example:

Discovery
If you use the discovery service, Satellite automatically detects the MAC address of the new host and restarts the host after you submit a request. Note that TCP port 8443 must be reachable by the Capsule to which the host is attached for Satellite to restart the host.
PXE-less Provisioning
After you submit a new host request, you must boot the specific host with the boot disk that you download from Satellite and transfer using a USB port of the host.
Compute Resources

Satellite creates the virtual machine and retrieves the MAC address and stores the MAC address in Satellite. If you use image-based provisioning, the host does not follow the standard PXE boot and operating system installation. The compute resource creates a copy of the image for the host to use. Depending on image settings in Satellite, seed data can be passed in for initial configuration, for example using cloud-init. Satellite can connect using SSH to the host and execute a template to finish the customization.

Note

By default, deleting the provisioned profile host from Satellite does not destroy the actual VM on the external compute resource. To destroy the VM when deleting the host entry on Satellite, navigate to Administer > Settings > Provisioning and configure this behavior using the destroy_vm_on_host_delete setting. If you do not destroy the associated VM and attempt to create a new VM with the same resource name later, it will fail because that VM name already exists in the external compute resource. You can still register the existing VM to Satellite using the standard host registration workflow you would use for any already provisioned host.