F22 System Wide Change: RpmOstree - Server side composes and atomic upgrades

Jaroslav Reznik jreznik at redhat.com
Tue Jan 13 12:32:43 UTC 2015

= Proposed System Wide Change: RpmOstree - Server side composes and atomic 
upgrades =

Change owner(s): Colin Walters <walters at verbum.org>

The rpm-ostree [1] tool provides a new way to deploy and manage RPM-based 
operating systems. Instead of performing a package-by-package install and 
upgrade on each client machine, the tooling supports "composing" sets of 
packages on a server side, and then clients can perform atomic upgrades as a 

The system by default preserves the previously booted deployment, providing an 
"A/B partition" type feel, allowing quick system rollbacks for the entire OS 
content (kernel and userspace).

This is a dependency of the Changes/Atomic_Cloud_Image. [2]

== Detailed Description ==
rpm-ostree is far from the first effort in the field of "image-like" update 
systems in Fedora. The StatelessLinux [3] project was first prototyped in 
Fedora Core 6 timeframe. Today, particularly in the cloud, many deployments 
perform OS upgrades by terminating an instance, and booting a new OS image and 
having it discover previous state stored in an external volume or network 

Another model is to perform an atomic upgrade by delivering the OS content via 
an ISO or USB stick, and simply swapping it out, then rebooting. The oVirt 
Node [4] is an example of this model.

The most challenging case though is stateful systems that require 
online/incremental Internet/Intranet connected upgrades. This is the default 
model for traditional Fedora package managers such as yum. A common approach 
for this to have an "A/B" partition model, and to use rsync or a custom tool 
to perform upgrades offline into the non-active partition.

rpm-ostree is attempting to address this last case, but in a more flexible and 
dynamic fashion. It has some of the flexibility of package systems, with the 
atomic upgrade and rollback of image-based systems. Furthermore, rpm-ostree 
intends to bind together the world of packages with an image-like update 
system. For example, an "rpm-ostree upgrade" command can show the system 
administrator the package-level diff.

In the future, the intention is for rpm-ostree to further gain package-system 
like features. See package layering prototype [5]. An active git branch uses 
libhif [6]. 

== Scope ==
* Proposal owners: work on http://projectatomic.io upstream

* Other developers:
** Anaconda: Help maintain rpmostreepayload.py
** Anaconda/Architecture porters: Backends for the OSTree bootloader code, 
similar to grubby

** RPM content:
*** Use systemd-tmpfiles instead of placing content in /var  (TODO: better docs 
for this)
*** Change "rootfiles" and "bash" to not require files in /root by default  
(TODO: bugzilla entry)

* Release engineering: Create trees from package set, mirroring support

* Policies and guidelines: TODO: Guideline for /var

[1] https://github.com/projectatomic/rpm-ostree
[2] https://fedoraproject.org/wiki/Changes/Atomic_Cloud_Image
[3] https://fedoraproject.org/wiki/StatelessLinux
[4] http://www.ovirt.org/Node_Building
[5] https://lists.projectatomic.io/projectatomic-archives/atomic-devel/2014-October/msg00005.html
[6] https://github.com/projectatomic/rpm-ostree/pull/81
devel-announce mailing list
devel-announce at lists.fedoraproject.org

More information about the devel mailing list