RFC: Katello repositories for internal use
Written together with @iballou
Decision Due Date: None
Context and Problem Statement
Usually, the Pulp instance provisioned on a Foreman Proxy server is assumed to be under full control of Katello.
One of the first plugins that challenges this assumption, is foreman_ansible_director.
To store Ansible content, it effectively bypasses Katello and interacts with the Pulp API directly.
While careful naming hygiene and a change to Katello’s orphan cleanup mechanism made this possible and relatively unproblematic, there are use cases - such as container image storage - where this is not an option due to limitations in the registry API.
This got us thinking about a new type of Katello repository, which is intended for internal use only by Foreman, Katello and their plugins.
In this RFC, we want to outline our inital thoughts and start the discussion.
Use cases for internal-only repositories:
Container image storage
-
Red Hat Lightspeed on-premises uses multiple containerized services to monitor hosts and generate advisories.
Currently, users themselves are responsible for procuring these images in the correct version.
With internal-only repositories, the foreman_rh_cloud plugin could:- handle the version and dependency resolution internally,
- clone the correct images into Katello, and
- provide the user with a simple “run this image” URL.
-
Another containerized tool is the MCP server. This service queries the Foreman API and transforms the values into something conformant with the MCP spec, which is used by various LLM-providers.
This too currently requires the user to find/build and pull a container image, corresponding with the Foreman version.
Here, Foreman itself could register an internal-only repository and serve the image from there. -
In foreman_ansible_director, such a repository would be essential for storage and distribution of Ansible Execution Environments.
SCAP content
foreman_openscap can be used to ensure hosts comply with security policies using SCAP files, which contain remediation rules understood and used by openscap to re-configure hosts.
Today, these files reside in Foreman’s Postgres instance. While functional, a relational database is not the ideal tool for this job, at least when compared to pulp_file.
Here, foreman_openscap could store this scap content in an internal-only file repository and distribute it from there.
Proposal
- Introduce an internal flag on repositories to mark them as for internal use only.
- When this flag is set, Katello could:
- Skip indexing,
- Omit creation of related Candlepin entities
- Exclude these repositories from API responses/payloads to prevent accidental user interaction
By reusing a lot of already existing functionality, users of these internal-only repositories benefit from existing Katello features, such as the synchronization between Smart Proxies by default.
Decision Outcome
TBD
Impacts
While it’s too early to be certain, we believe this can be implemented without disrupting existing workflows.