Red Hat Enterprise Linux Atomic Host is a small footprint, purpose-built version of Red Hat Enterprise Linux that is designed to run containerized workloads. Building on the success of our last release, Red Hat’s Atomic-OpenShift team is excited to announce the general availability of Red Hat Enterprise Linux Atomic Host 7.2.6. This release features improvements in rpm-ostree, cockpit, skopeo, docker, and the atomic CLI. The full release notes can be found here. This post is going to explore a major new feature, currently available as a Technology Preview: package layering.
Increasing the Flexibility of Atomic Host Deployments
By design, Atomic Host is an immutable operating system with simplified configuration, but state does need maintained between reboots, so directories like /etc/ and /var are writable for configuration and data respectively. All code is deployed to Atomic Host through atomic upgrades and rollbacks. Each release is composed from a fixed set of packages and, all workloads are deployed on top as Linux containers.
Containers make it simple to run traditional applications and microservices. Containers also make it simple to run debugging tools or monitoring agents on the host. The challenge is, most of the agents and tools that we use today were designed before containers were invented – hence, not every piece of software is easy to migrate into a container.
For the past two years, Red Hat has been promoting the concept of super-privileged containers (SPCs) to handle the “tools and agents” use case. We still believe this is an ideal approach for solving these use cases in a containerized environment. That said, there are plenty of situations where it would be nice to simply add an rpm, or even a handful, to Atomic Host. Customers have been asking to do this, and we are excited to announce that it is now possible.
Let’s say we want to run something like lm_sensors on Atomic Host. We can easily create a dedicated SPC or add it to something along the lines of the rhel-tools container to accomplish this… or now we can just add the package plus dependencies directly to Atomic Host. This is especially useful for things like monitoring agents, drivers, etc.
In the following example I’ll add lm_sensors which will also pull in some perl dependencies.
bash-4.2# rpm-ostree pkg-add lm_sensors
notice: pkg-add is a preview command and subject to change.
Downloading metadata: [===================================================] 100%
Resolving dependencies... done
Will download: 29 packages (12.1 MB)
Downloading from rhel-7-server-rpms: [==============================] 100%
Importing: [==============================================================] 100%
Checking out tree b672bf8... done
Running %post for lm_sensors...... done
Writing rpmdb... done
Writing OSTree commit... done
Copying /etc changes: 27 modified, 4 removed, 62 added
Transaction complete; bootconfig swap: yes deployment count change: 1
---truncating dep list ---------------------------------------------------------------------
Run "systemctl reboot" to start a reboot
Now that the packages have been added and installed, we must reboot to use them.
bash-4.2#atomic host status
Version: 7.2.6 (2016-08-05 00:50:20)
Version: 7.2.6 (2016-07-29 19:54:25)
Checking the status of the host shows that we’ve added lm_sensors to the system!
The Fine Print
- pkg-add and pkg-remove is a tech preview feature and we would love for users to try it out and provide feedback.
- Currently we’re limited on installing packages that do not add users to the system. We will be working on adding this capability in the future, but in the meantime that will limit the number of packages that are installable via package layering. The transaction will currently error out if a package attempts to add a user.
- Dependencies are resolved in a familiar way using libdnf. By default you’ll have access to the Red Hat Enterprise Linux repositories, and simply add any needed 3rd party repo files to /etc/yum.repos.d/.
- When `atomic host upgrade` is run layered packages will also be updated if newer versions are available in their repos.
- We can restore the system to its original state by running `rpm-ostree pkg remove [package(s)]` followed by a reboot.
At Red Hat, we think that containers and container hosts should make your life easier. While overlay packages are not the solution to every problem, they can be the difference between a convenient fives minutes of work or four hours of yak shaving. In other words, overlay packages could be the difference between being able to deploy an agent or tool quickly or spending half of a day building a container when you can’t or don’t want to.
We hope you enjoy using this release as much as we did making it. Please check out the new package layering functionality as well as a host of other new packages and features and let us know what you think by leaving a comment (below).