On this page
ADR 1 — Base image
Status: accepted
Context
Corium needs an immutable base in the CoreOS/OSTree lineage, and exposes cloud-init as its configuration surface.
Fedora CoreOS was the obvious starting point: it is the mature member of the
lineage, with excellent install tooling (coreos-installer, live ISO, PXE).
Three things were verified before ruling on it.
- Image-provided Ignition fragments in
/usr/lib/ignition/base.d/work, and with the right precedence. Ignition merges the user’s config over the image’s, so baked-in plumbing applies wherever the operator is silent and never overrides them. Confirmed ininternal/exec/engine.goincoreos/ignition, not from documentation. - FCOS boots with no Ignition config at all. Maintainers declined to make its
absence fatal: “Today, we happily boot and sit there if the user doesn’t
provide Ignition” (
fedora-coreos-tracker#279). A cloud-init-only node is therefore possible. - Zincati, FCOS’s auto-update agent, fails on OCI-native deployments and must be masked.
So the design was buildable. The question was whether it should be built.
Decision
Base on quay.io/fedora/fedora-bootc.
Consequences
FCOS is Ignition-native. Running cloud-init as the primary surface there means
masking Zincati, neutralising Afterburn’s SSH key injection — it overlaps
cloud-init’s metadata role, and running both gives two agents racing to
provision the same user — and arbitrating between NetworkManager and
cloud-init’s network stage. That is a meaningful amount of work whose endpoint
is the place fedora-bootc already occupies.
The ecosystem has drawn this line already. ucore, the most developed FCOS
derivative, stays on Ignition. k0snode-bootc, which runs k0s on bootc with
cloud-init, starts from a generic bootc base rather than FCOS. No project ships
FCOS with cloud-init as its primary surface.
Finally, FCOS is itself converging on bootc (fedora-coreos-tracker#2214,
targeting Fedora 46). Starting from fedora-bootc is starting where FCOS is
going.
What is given up: FCOS’s install tooling and its battle-tested server base.
bootc-image-builder covers the first, producing an installable artefact
directly from the image rather than FCOS’s two-step of installing a stock image
and rebasing onto ours.