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コマンドのマニュアル
ostreeの説明スライド