Story #8924
closedAs a user, I can manage OSTree repositories
100%
Description
Fedora IoT Overview¶
Fedora IoT and Fedora Siliverblue distributions use OSTree repositories to receive updates. Unlike traditional distributions that rely on package managers such yum
and dnf
to install updates, Fedora IoT uses OSTree to pull entire disk images from a repository. Each commit in an OSTree repository represents a full disk image for a system. During an update, a machine running Fedora IoT pulls down the latest commit and tries to boot into it. If it can't boot successfully, it will fall back to booting to the previous commit. The commit is made of many small files that the client downloads. Repositories can also provide static deltas
for two commits. These static deltas allow a client to download a single file that represents a change that can be applied to the current commit on the client in order to produce the new commit. The size of the static delta
depends on how much change occurred between the two commits.
Anatomy of an OSTree repository¶
OSTree repositories consist of refs
and commits
. Each commit
can have a parent commit. This relationship between commits creates a history that clients can follow if they need to revert to a previous state. Each ref
is like a branch in a git repository. Each ref
has its own set of commits that represent its history. The commits
can be shared between refs
.
Creating OSTree content¶
osbuild-composer
is a service for building customized operating system images. Instructions for creating a commit are here[0]. The output of osbuild-composer
can be an archive that contains OSTree commits or a VM disk image with the commits embedded. Disk images can be used to boot a machine initially. Future updates for that machine are best delivered using archives of commits. The archives are expanded and then made available to the system using a web server.
Pulp's role in managing OSTree repositories¶
Pulp needs to allow users to upload OSTree commit archives into repositories. Pulp needs to serve the uncompressed archives to clients. Each time an archive with commits is uploaded, a new repository version should be created. OSTree repositories need to keep track of refs
and commits
as separate content types.
Users need to be able to sync an OSTree repository from one Pulp instance to another Pulp instance.
Users need to be able to delete OSTree repository version.
Users need to be able to copy refs
and individual commits
from one repository to another repository.
[0] https://www.osbuild.org/guides/user-guide/building-ostree-images.html