As a user, I can manage OSTree repositories
Fedora IoT Overview¶
Fedora IoT and Fedora Siliverblue distributions use OSTree repositories to receive updates. Unlike traditional distributions that rely on package managers such
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
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
Creating OSTree content¶
osbuild-composer is a service for building customized operating system images. Instructions for creating a commit are here. 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
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.