To Foreman 2.0 and beyond: an architecture perspective
2020-02-03, 14:25–14:50, B.2.015

The Foreman project is 10 years old, but there's still plenty of things to change. In this presentation we'll go over the current Foreman architecture as well as Katello before looking to the future with Foreman 2.0 and Katello 4.0.


Foreman and Katello consist of multiple services which interact with each other. In this talk we will discuss these services and how they communicate both in a vanilla Foreman (1.24) and a Katello (3.14) setup. This means Foreman, Foreman Proxy, Katello, Pulp and Candlepin with their the connections and databases. The optional services like Puppetserver, DNS, DHCP, TFTP and compute resources will also be handled.

Foreman 1.25 becomes Foreman 2.0 and there is also a rough roadmap to Katello 4.0. Major versions means dropping support.

From an architecture perspective Foreman 2.0 is not a huge change but a lot of implementation details will change. Foreman will limit database support to PostgreSQL, drop Debian Stretch and Ubuntu Xenial allowing us to only support Ruby 2.5+. Dynflow will use Redis to allow scaling out and Puma will replace Passenger. On EL7 systems PostgreSQL will be upgraded to version 10 and the Foreman Proxy will run on Ruby 2.5.

In Katello 4.0 the changes are more significant. It won't be a huge surprise that Pulp is a huge driver in the major version. Work is already under way to support Pulp 3. Pulp 3 uses PostgreSQL and Redis instead of MongoDB and Qpid in Pulp 2. For full removal of Qpid, the Candlepin event handling in Katello is also changed. From an operational perspective it will be easier to deal with fewer services.

Note this talks about architecture but not the actual delivery. That means it won't be about switching to containers but knowing your architecture can be seen as a prerequisite to containers.

See also: Slides