CentOS Atomic Hostのアップグレード方法

CentOS Atomic Hostのアップグレード方法です。

現行バージョン確認

CentOS Atomic Hostのアップグレードは、atomic hostコマンドで簡単に行うことが可能です。まずは現行のバージョンを確認してみます。2015/06/17のVer7.1.2であることがわかります。

# atomic host status
  TIMESTAMP (UTC)         VERSION   ID             OSNAME                 REFSPEC                                                     
* 2015-06-17 21:14:52     7.1.2     5aad058fd2     centos-atomic-host     centos-atomic-host:centos-atomic-host/7/x86_64/standard     

GPG: Found 1 signature on the booted deployment (*):

  Signature made Wed Jun 17 21:18:29 2015 using RSA key ID F17E745691BA8335
  Good signature from "CentOS Atomic SIG <security@centos.org>"

アップグレード実行

最新のバージョンにするにはatomic host upgradeコマンドを実行します。

# # atomic host upgrade
Updating from: centos-atomic-host:centos-atomic-host/7/x86_64/standard

GPG: Verification enabled, found 1 signature:

  Signature made Wed Feb 24 08:19:00 2016 using RSA key ID F17E745691BA8335
  Good signature from "CentOS Atomic SIG <security@centos.org>"

951 metadata, 7084 content objects fetched; 313580 KiB transferred in 385 seconds
Copying /etc changes: 25 modified, 8 removed, 44 added
Transaction complete; bootconfig swap: yes deployment count change: 1
Changed:
  NetworkManager-1:1.0.6-27.el7.x86_64
  NetworkManager-libnm-1:1.0.6-27.el7.x86_64
  atomic-1.6-6.gitca1e384.el7.x86_64
  authconfig-6.2.8-10.el7.x86_64

#--------------中略-------------------

Upgrade prepared for next boot; run "systemctl reboot" to start a reboot

コマンドの実行が終わった時点ではupgradeは完了していません。もう一度statusコマンドで見てみると最新バージョンのエントリが加わっていることと、ポインタ(*)が旧バージョンを指していることがわかります。再起動をすることで最新バージョンに切り替わります。

# atomic host status
  TIMESTAMP (UTC)         VERSION        ID             OSNAME                 REFSPEC                                                     
  2016-02-24 08:01:24     7.20160224     378538275f     centos-atomic-host     centos-atomic-host:centos-atomic-host/7/x86_64/standard     
* 2015-06-17 21:14:52     7.1.2          5aad058fd2     centos-atomic-host     centos-atomic-host:centos-atomic-host/7/x86_64/standard     

GPG: Found 1 signature on the booted deployment (*):

  Signature made Wed Jun 17 21:18:29 2015 using RSA key ID F17E745691BA8335
  Good signature from "CentOS Atomic SIG <security@centos.org>"

ということで再起動して、

# systemctl reboot

もう一度statusコマンドで見ると最新バージョンに切り替わっていることがわかります。

# atomic host status
  TIMESTAMP (UTC)         VERSION        ID             OSNAME                 REFSPEC                                                     
* 2016-02-24 08:01:24     7.20160224     378538275f     centos-atomic-host     centos-atomic-host:centos-atomic-host/7/x86_64/standard     
  2015-06-17 21:14:52     7.1.2          5aad058fd2     centos-atomic-host     centos-atomic-host:centos-atomic-host/7/x86_64/standard     

GPG: Found 1 signature on the booted deployment (*):

  Signature made Wed Feb 24 08:19:00 2016 using RSA key ID F17E745691BA8335
  Good signature from "CentOS Atomic SIG <security@centos.org>"

バージョン切り戻し(rollback)

Atomic Hostはrpm-ostreeという仕組みを使っているので、バージョンの切り戻しも簡単に行えます。rollbackコマンドを実行すると旧バージョンに切り戻しができます。

それぞれのパッケージが切り戻しされていくのが表示されます。

# atomic host rollback
Moving '5aad058fd206c624abf1c531997ae40126f03226f1da9a59c23a67b1cfd5140c.0' to be first deployment
Transaction complete; bootconfig swap: yes deployment count change: 0
Changed:
  NetworkManager 1:1.0.6-27.el7 -> 1:1.0.0-14.git20150121.b4ea599c.el7
  NetworkManager-libnm 1:1.0.6-27.el7 -> 1:1.0.0-14.git20150121.b4ea599c.el7
  atomic 1.6-6.gitca1e384.el7 -> 0-0.22.git5b2fa8d.el7.centos
  authconfig 6.2.8-10.el7 -> 6.2.8-9.el7

#--------------中略-------------------

Run "systemctl reboot" to start a reboot

この時点ではまだ最新バージョンで動いています。

# atomic host status
  TIMESTAMP (UTC)         VERSION        ID             OSNAME                 REFSPEC                                                     
  2015-06-17 21:14:52     7.1.2          5aad058fd2     centos-atomic-host     centos-atomic-host:centos-atomic-host/7/x86_64/standard     
* 2016-02-24 08:01:24     7.20160224     378538275f     centos-atomic-host     centos-atomic-host:centos-atomic-host/7/x86_64/standard     

GPG: Found 1 signature on the booted deployment (*):

  Signature made Wed Feb 24 08:19:00 2016 using RSA key ID F17E745691BA8335
  Good signature from "CentOS Atomic SIG <security@centos.org>"

後はアップグレードの時と同様に再起動します。

# systemctl reboot

旧バージョンに切り替わりました。

# atomic host status 
  TIMESTAMP (UTC)         VERSION        ID             OSNAME                 REFSPEC                                                     
* 2015-06-17 21:14:52     7.1.2          5aad058fd2     centos-atomic-host     centos-atomic-host:centos-atomic-host/7/x86_64/standard     
  2016-02-24 08:01:24     7.20160224     378538275f     centos-atomic-host     centos-atomic-host:centos-atomic-host/7/x86_64/standard     

GPG: Found 1 signature on the booted deployment (*):

  Signature made Wed Jun 17 21:18:29 2015 using RSA key ID F17E745691BA8335
  Good signature from "CentOS Atomic SIG <security@centos.org>"

rpm-ostree

CentOS Atomic Hostで上記のような動きができるのは、rpm-ostree機能を使っているからです。細かい説明は参考資料のスライドを見ていただくとして、少し実機を見てみます。

先ほどatomic host statusコマンドを実行した結果をもう一度見てみます。

# atomic host status
  TIMESTAMP (UTC)         VERSION        ID             OSNAME                 REFSPEC                                                     
* 2016-02-24 08:01:24     7.20160224     378538275f     centos-atomic-host     centos-atomic-host:centos-atomic-host/7/x86_64/standard     
  2015-06-17 21:14:52     7.1.2          5aad058fd2     centos-atomic-host     centos-atomic-host:centos-atomic-host/7/x86_64/standard     

これをostreeコマンド見ると以下になります。

# ostree admin status
* centos-atomic-host 5aad058fd206c624abf1c531997ae40126f03226f1da9a59c23a67b1cfd5140c.0
    Version: 7.1.2
    origin refspec: centos-atomic-host:centos-atomic-host/7/x86_64/standard
    GPG: Signature made Wed Jun 17 21:18:29 2015 using RSA key ID F17E745691BA8335
    GPG: Good signature from "CentOS Atomic SIG <security@centos.org>"
  centos-atomic-host 378538275fd9029a92435dc8c1efdb7a3486b04de47a2e6ac96752015b8352e5.1
    Version: 7.20160224
    origin refspec: centos-atomic-host:centos-atomic-host/7/x86_64/standard
    GPG: Signature made Wed Feb 24 08:19:00 2016 using RSA key ID F17E745691BA8335
    GPG: Good signature from "CentOS Atomic SIG <security@centos.org>"

以下のディレクトリにそれぞれのIDの値でファイルシステムが配置されいます。

# ls -li /sysroot/ostree/deploy/centos-atomic-host/deploy/
total 16
12598374 drwxr-xr-x. 11 root root 4096 Apr  2 04:23 378538275fd9029a92435dc8c1efdb7a3486b04de47a2e6ac96752015b8352e5.1
 8881930 -rw-r--r--.  1 root root   73 Apr  2 04:23 378538275fd9029a92435dc8c1efdb7a3486b04de47a2e6ac96752015b8352e5.1.origin
12586216 drwxr-xr-x. 11 root root 4096 Jun 17  2015 5aad058fd206c624abf1c531997ae40126f03226f1da9a59c23a67b1cfd5140c.0
 8436263 -rw-r--r--.  1 root root   73 Jun 17  2015 5aad058fd206c624abf1c531997ae40126f03226f1da9a59c23a67b1cfd5140c.0.origin

このディレクトリの中がそれぞれ、ファイルシステムになっており、これを内部的にchrootして利用しているため、簡単にバージョンの切り替えが行えるようです。

ls -li /sysroot/ostree/deploy/centos-atomic-host/deploy/378538275fd9029a92435dc8c1efdb7a3486b04de47a2e6ac96752015b8352e5.1/       
total 20
12598375 lrwxrwxrwx.  1 root root    7 Apr  2 04:23 bin -> usr/bin
 1226210 dr-xr-xr-x.  5 root root 4096 Jan  1  1970 boot
 8790083 drwxr-xr-x.  2 root root    6 Jan  1  1970 dev
12621527 drwxr-xr-x. 84 root root 8192 Apr  2 04:24 etc
12598377 lrwxrwxrwx.  1 root root    8 Apr  2 04:23 home -> var/home
12598378 lrwxrwxrwx.  1 root root    7 Apr  2 04:23 lib -> usr/lib
12598379 lrwxrwxrwx.  1 root root    9 Apr  2 04:23 lib64 -> usr/lib64
12598380 lrwxrwxrwx.  1 root root    9 Apr  2 04:23 media -> run/media
12598381 lrwxrwxrwx.  1 root root    7 Apr  2 04:23 mnt -> var/mnt
12598382 lrwxrwxrwx.  1 root root    7 Apr  2 04:23 opt -> var/opt
12598383 lrwxrwxrwx.  1 root root   14 Apr  2 04:23 ostree -> sysroot/ostree
12598391 drwxr-xr-x.  2 root root    6 Jan  1  1970 proc
12598384 lrwxrwxrwx.  1 root root   12 Apr  2 04:23 root -> var/roothome
 1226213 drwxr-xr-x.  2 root root    6 Jan  1  1970 run
12598385 lrwxrwxrwx.  1 root root    8 Apr  2 04:23 sbin -> usr/sbin
12598386 lrwxrwxrwx.  1 root root    7 Apr  2 04:23 srv -> var/srv
 6588555 drwxr-xr-x.  2 root root    6 Jan  1  1970 sys
 8790084 drwxr-xr-x.  2 root root    6 Jan  1  1970 sysroot
12598387 lrwxrwxrwx.  1 root root   11 Apr  2 04:23 tmp -> sysroot/tmp
12598392 drwxr-xr-x. 12 root root 4096 Jan  1  1970 usr
 8880757 drwxr-xr-x.  2 root root    6 Jan  1  1970 var

もう少し詳しく知りたい場合は、参考資料のスライドがわかりやすかったです。

参考資料

atomic hostコマンドのマニュアル

https://access.redhat.com/webassets/avalon/d/Red_Hat_Enterprise_Linux_Atomic_Host-7-CLI_Reference-ja-JP/Red_Hat_Enterprise_Linux_Atomic_Host-7-CLI_Reference-ja-JP.pdf

ostreeの説明スライド