Andrew Mercer
on this page

Cobbler and Foreman both sit a layer above raw Kickstart/Preseed/PXE: instead of hand-editing pxelinux.cfg entries, DHCP reservations, and per-host answer files, you manage distros, profiles (a distro + an answer-file template + kernel options), and systems (a specific host mapped to a profile, by MAC or name) through a CLI or web UI, and the tool generates and serves the PXE/TFTP/answer-file plumbing underneath.

Cobbler

Lighter-weight, RPM-ecosystem-native, CLI/API-first.

sudo dnf install cobbler cobbler-web
sudo systemctl enable --now cobblerd

# Import an installable tree from a mounted ISO/DVD
cobbler import --path=/mnt/rhel9-dvd --name=rhel9 --arch=x86_64

# Define a profile: a distro + a kickstart template
cobbler profile add --name=rhel9-web --distro=rhel9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/web.ks

# Register a specific host against that profile
cobbler system add --name=web01 --profile=rhel9-web --mac=52:54:00:aa:bb:cc --ip-address=192.0.2.50 --interface=eth0

cobbler sync            # regenerates DHCP/TFTP/PXE config from everything defined above

Cobbler manages an internal DHCP/TFTP/DNS config (or can hand those off to your existing infra in "managed=0" mode) and templates kickstart files with Cheetah/Jinja2 variables per-system, so one kickstart template can serve many hosts with host-specific substitutions (hostname, IP, etc.) rather than one file per host.

Foreman (and Katello/Satellite)

Foreman is a broader lifecycle-management tool: provisioning (via Kickstart/Preseed/PXE, wrapping much of the same territory as Cobbler) plus ongoing configuration (Puppet/Ansible integration), inventory, and reporting through a web UI, with a plugin ecosystem. Katello adds content/repository/subscription management (patching, content views, lifecycle environments) on top of Foreman; Red Hat Satellite is Red Hat's supported, productized distribution of Foreman+Katello, so notes/docs about Satellite generally apply conceptually to self-hosted Foreman+Katello as well.

# Foreman installation is normally done via its installer script rather than raw package install:
foreman-installer --scenario foreman     # or --scenario katello, on a supported RHEL-family host

Within Foreman, the equivalent building blocks to Cobbler's are operating systems, provisioning templates (Kickstart/Preseed ERB templates), host groups, and hosts — host groups in particular give you Puppet/Ansible-class-like inheritance of parameters across many hosts, closer in spirit to FAI's class model than to Cobbler's flatter profile system.

Which one

Cobbler is the lighter choice if all you want is "manage kickstart/PXE for a rack of RHEL boxes without touching pxelinux.cfg by hand." Foreman (optionally with Katello) is the choice once provisioning needs to plug into ongoing configuration management, patching, and multi-team host inventory — which is also why it's the base of Red Hat's commercial Satellite product for shops already paying for RHEL support.