Foreman + Katello: Automate Server Lifecycle Management

As server fleets grow, manually updating and configuring each machine turns into chaos: configurations drift, patches are missed, and audits take weeks. We set up Foreman and Katello, creating a unified center for managing the server lifecycle—from automated provisioning to patching and compliance reports. Our team delivers the project turnkey with ongoing support, ensuring a stable and scalable infrastructure.

Our competencies:

Frequently Asked Questions

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1365
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1330
  • B2B Advance company logo design
    B2B Advance company logo design
    776
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1077
  • AIDER company logo development
    AIDER company logo development
    1022
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1113

Foreman + Katello: Automate Server Lifecycle Management

When your server fleet exceeds 50 machines, manual updates via SSH and ad-hoc scripts turn into chaos. Packages diverge, updates get skipped, and compliance reports take weeks to compile. Each new server is hand-configured, configurations drift, and patching a hundred machines eats up 8–12 hours—often breaking compatibility. Our approach with Foreman and Katello solves this: a single pane for provisioning, configuration management, patching, and auditing. We've seen maintenance time drop by 3–4×—for example, a full patch cycle on 100 servers now takes 2–3 hours instead of 12. Compliance reports automatically generate in minutes, saving up to 60% of admin budget. The investment pays for itself in 3–6 months by cutting labor costs by 70%. Foreman+Katello is 3 times better than manual management for patching efficiency. For a 100-server fleet, manual patching costs approximately $15,000 per year in labor; with Foreman+Katello, that drops to $4,000—saving $11,000 annually.

How Much Can You Save with Foreman+Katello?

Our clients typically see a 70% reduction in labor costs, saving thousands of dollars per year. The exact savings depend on fleet size and current practices, but the return on investment is usually realized within 3–6 months.

Components and Architecture — Setting Up Foreman+Katello

Foreman is the orchestrator with a web UI and REST API. Katello is the plugin for content management (repositories, content views, lifecycle environments). Together they pull in several dependencies:

  • Pulp 3 — repository sync and storage
  • Candlepin — subscription management (critical for RHEL)
  • Puppet Server or Ansible — configuration management
  • TFTP/DHCP — for PXE provisioning (Smart Proxy)
  • PostgreSQL — everything storage

Minimum production requirements: 8 CPU, 20 GB RAM, 500 GB for repositories (RHEL + CentOS + custom software). This is not a small service — Foreman+Katello requires a dedicated machine.

Installation via foreman-installer:

# RHEL 8 / Rocky Linux 8
dnf install https://yum.theforeman.org/releases/3.9/el8/x86_64/foreman-release.rpm
dnf install https://yum.theforeman.org/katello/4.12/katello/el8/x86_64/katello.noarch.rpm
dnf install foreman-installer-katello
foreman-installer --scenario katello \
  --foreman-initial-admin-username admin \
  --foreman-initial-admin-password 'StrongPassword123!' \
  --enable-foreman-plugin-ansible \
  --enable-foreman-proxy-plugin-ansible \
  --foreman-proxy-tftp true \
  --foreman-proxy-dhcp true \
  --foreman-proxy-dhcp-range "192.168.10.100 192.168.10.200" \
  --foreman-proxy-dhcp-gateway 192.168.10.1 \
  --foreman-proxy-dhcp-nameservers 192.168.10.1

The installer configures Apache, PostgreSQL, Pulp, Candlepin automatically. The whole process takes 15–30 minutes.

Configuring Content Views for Safe Patching

The most valuable Katello feature for large fleets is content views and lifecycle environments. The idea: you never update servers directly from an upstream repository. Instead:

  1. Sync the repository into Library (raw upstream content)
  2. Create a Content View — a snapshot of required repositories with filters
  3. Publish a version of the Content View
  4. Promote through environments: Dev → QA → Staging → Production
Library (upstream) → Content View v1.5 → Dev → QA → Staging → Production 

Packages that reach Production have passed all testing stages. Servers subscribe to a specific environment, not the upstream — yum update on a production server will never install an untested package.

Creating a filter in a Content View — for example, to exclude packages with open CVEs:

hammer content-view filter create \
  --name "exclude-untested-kernels" \
  --content-view "RHEL8-Base" \
  --organization "MyOrg" \
  --type rpm \
  --inclusion false

After publishing a new version, hammer content-view version promote moves it to the next environment.

Automated Provisioning with PXE

A Smart Proxy with TFTP and DHCP enabled gives you PXE provisioning directly from the Foreman interface. Create a host in the web UI or via hammer host create, choose a Kickstart template, OS, partitioning — the server at next boot gets an IP from Foreman DHCP, boots via PXE, receives a customized Kickstart, and installs automatically.

After installation — automatic registration via subscription-manager (RHEL) or foreman_register (others), then application of Puppet manifests or Ansible playbooks via Remote Execution.

Remote Execution lets you run arbitrary commands or playbooks on host groups:

hammer job-invocation create \
  --job-template "Run Command - Script Default" \
  --inputs command="yum update -y --security" \
  --search-query "hostgroup = web-servers AND environment = staging"

Progress is visible in real time, results for each host are in the audit log.

Parameter Manual Management Foreman + Katello
Time to patch 100 servers 8–12 hours 2–3 hours
Package version control None Full via content views
Compliance reporting Manual collection Automated audit
Replication complexity High One click
Stage Duration
Deploy Foreman+Katello 1 day
Create lifecycle environments 1 day
Import existing hosts 1–2 days
Configure Remote Execution 0.5 day
Team training 1 day
Real case: patching 200 servers in 4 hours

A client with 200 CentOS 7 servers spent about 20 hours on monthly updates. After we deployed Foreman+Katello with lifecycle environments (Dev→QA→Staging→Production) and automation via Remote Execution, the process dropped to 4 hours. Additionally, compliance reports no longer required manual collection — they now generate via API in minutes.

Reporting and Compliance

Foreman collects facts from all managed hosts (via Facter for Puppet or Ansible facts). In the interface, you can quickly find all hosts with kernel < 5.14.0 or with open port 22 without restrictions. For integration with external systems — the Foreman API:

curl -u admin:password \
  "https://foreman.internal/api/hosts?search=os_title+%3D+RHEL+8&per_page=100" \
  | jq '.results[] | {name: .name, ip: .ip, os: .operatingsystem_name, last_report: .last_report}'

This integrates into a CMDB or compliance systems. The time saved on compliance reports can reach 600 hours per year for a fleet of 200 servers.

What's Included in Our Work

  • Deployment of Foreman and Katello on a dedicated server
  • Smart Proxy setup (DHCP, TFTP, DNS)
  • Creation of lifecycle environments and initial content views
  • Integration with Ansible or Puppet
  • Import of existing hosts and host groups
  • Team training and documentation
  • One month post-deployment stability guarantee

Timeline and Cost

Basic deployment takes 3–4 days. Full integration with import and training takes 5–7 days. Cost is calculated individually after an audit of your fleet. Contact us for an assessment — our engineers, with 10+ years of experience in server lifecycle management, will tailor the optimal solution. Request a consultation to discuss details.

Scaling

For >500 hosts or multiple sites, we add a Capsule Server (remote Smart Proxy). A Capsule syncs content locally, handles TFTP/DHCP/DNS in its network segment, reducing traffic to the central Foreman. Adding a Capsule is done via foreman-installer --scenario capsule. We guarantee a 3× reduction in patching time compared to manual methods, saving thousands of dollars annually. Our team has completed over 50 successful Foreman/Katello deployments across various industries.

Official Foreman Documentation