theforeman / theforeman/foremanctl
Using a container to download needed content files for iop
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 27
- Forks
- 47
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 40
Description
Background
iop services require security content files to be downloaded and made available locally to the services that need them. The first of these was the cvemap.xml. See cvemap downloader. This method supports disconnected by allowing a user to download the file themselves in put it in a well known location.
Limits of this design:
- The download timer service is always running in connected and disconnected modes
- Downloader scripts live in the foremanctl repository
- The scripts run on the host itself
Design
Here is roughly the setup I envisioned, with these benefits:
- More clearly defined deployment -- connected vs. disconnected
- Leans into our architecture of running as containers
- Turns the downloader scripts and idea into a true code repo
Connected
- A container exists that contains a unified download script
- A timer exists that executes a container via a quadlet
- That container has a podman volume mounted to it and puts the files in that container
- The
iop-gatewayalso mounts the same volume and serves the files
Disconnected
foremanctlis ran with a--air-gappedor--disconnectedflag- The existence of this flag prevents deployment of the download service, thereby saving resources and avoiding a service that could try to reach out to the internet.
- The
iop-gatewaymounts the podman volume and serves the files. - The user places each file that was downloaded into the podman volume to be picked up by the gateway.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with docs/iop.md and the existing CVE map downloader to understand the current content-download flow. Then trace how foremanctl deploys iop services and how the proposed quadlet, container, and Podman volume would connect to iop-gateway. Done means connected deployments use the containerized downloader while air-gapped or disconnected deployments omit it and still allow files in the shared volume.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- devops, infrastructure
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100