Adding a new distro¶
Distros are a config plug-point. To add one:
-
Copy the template from
config/repos/SCHEMA.md(the section near the bottom). Save it asconfig/repos/<name>.yaml, e.g.config/repos/ubuntu-noble.yaml. -
Fill in the fields:
name— kebab-case identifier; must match the filename stem.pulp_plugin—debfor apt repos,rpmfor yum/dnf repos. RPM support is not yet wired up; useconfig/repos/rhel9-baseos.yaml.disabledas a stub reference and watch the roadmap.codename— the upstream codename (e.g.jammy,noble,bookworm). Used to derive pocket labels.upstream.baseurl— primary URL. Use${VAR:-default}syntax to allow environment override (matches thevalidate_upstream.pyfallback flow).upstream.distributions— list each pocket explicitly (e.g.[noble, noble-updates, noble-security]). Each entry expands into its own Pulp remote/repository/distribution.-
distribute.base_path— root path under Pulp's content host; arch and pocket are appended automatically. -
Validate the file before deploying:
Errors point you at the offending field; warnings flag unknown keys.
- Wire into the environment. Add the distro name to
config/environments/low-side.yaml(andhigh-side.yamlif appropriate):
If the distros: list is absent or empty, all enabled *.yaml files in
config/repos/ are processed.
- Confirm discovery:
- Dry-run the reconcile, then apply, then sync and publish:
python3 automation/bootstrap/reconcile_pulp.py # dry-run
python3 automation/bootstrap/reconcile_pulp.py --apply # create remotes/repos
python3 automation/bootstrap/reconcile_pulp.py --apply --sync --publish
- Validate upstream reachability (optional but recommended for first-run):
Adding a stub-only distro (no runtime support yet)¶
If you want to commit a config but skip it at reconcile time — for example,
because the Pulp image is missing the required plugin — name the file
<name>.yaml.disabled. The reconcile glob is strictly *.yaml, so disabled
stubs are ignored automatically. See:
config/repos/debian-bookworm.yaml.disabledconfig/repos/rhel9-baseos.yaml.disabled
When the runtime catches up, rename to <name>.yaml and add to the env's
distros: list.