订阅我们的博客

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.

Package Layering

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

Overlaying... 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

Added:

lm_sensors-3.3.4-11.el7.x86_64

lm_sensors-libs-3.3.4-11.el7.x86_64

perl-4:5.16.3-286.el7.x86_64

---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

State: idle

Deployments:

* rhel-atomic-host-ostree:rhel-atomic-host/7/x86_64/standard

Version: 7.2.6 (2016-08-05 00:50:20)

BaseCommit: b672bf8a457cb28e003dee20c53749636ef5fce3e4743afe4aaad269d3aaa62a

Commit: 7694a2f0dc4d6d94346fadc429cc9914ec52578d0d0ef2612799cb2b85293e0f

OSName: rhel-atomic-host

Packages: lm_sensors

rhel-atomic-host-ostree:rhel-atomic-host/7/x86_64/standard

Version: 7.2.6 (2016-07-29 19:54:25)

Commit: b672bf8a457cb28e003dee20c53749636ef5fce3e4743afe4aaad269d3aaa62a

OSName: rhel-atomic-host
 

Checking the status of the host shows that we’ve added lm_sensors to the system!

The Fine Print

  1. pkg-add and pkg-remove is a tech preview feature and we would love for users to try it out and provide feedback.
  2. 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.
  3. 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/.
  4. When `atomic host upgrade` is run layered packages will also be updated if newer versions are available in their repos.
  5. We can restore the system to its original state by running `rpm-ostree pkg remove [package(s)]` followed by a reboot.

Conclusion

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).


关于作者

按频道浏览

automation icon

自动化

涵盖技术、团队和环境的最新自动化平台

AI icon

人工智能

平台更新使客户可以在任何地方运行人工智能工作负载

cloud services icon

云服务

有关我们的托管云服务组合的更多信息

security icon

安全防护

有关我们如何跨环境和技术减少风险的最新信息

edge icon

边缘计算

简化边缘运维的平台更新

Infrastructure icon

基础架构

全球领先企业 Linux 平台的最新动态

application development icon

应用领域

我们针对最严峻的应用挑战的解决方案

Original series icon

原创节目

关于企业技术领域的创客和领导者们有趣的故事