個人的に気になったRHEL 8の変更点
今後のRedhat Enterprise Linux 8(RHEL 8)バージョンアップに備えて、リリースノートを確認しました。その中で気になった変更点をメモしておきます。
Red Hat Enterprise Linux 8.0 リリースノート
Contents
概要
RHEL 7からRHEL 8へのメジャーバージョンアップによる変更点は、大きく分けると既存機能の変更と新機能の追加に分類できます。
今後、RHELクローンのCentOSも7から8へメジャーバージョンアップが発生することが予想されますが、基本的にはRHELと同じ考え方ができます。
サポート期間
2019年5月から2029年5月までの10年間がサポート期間です。この間、RHEL 8はマイナーバージョンアップされます。
なお、RHEL 7は2024年6月にサポート終了予定です。システム全体のライフサイクルを考えると、もう1〜2年はシステム導入時にRHEL 7を採用してもよいかもしません。
ただし、それ以降でのシステム導入や、予め5年以上のシステム利用が想定されている場合は、RHEL 8を採用すべきです。
主要ソフトウェアのバージョン
主要ソフトウェアが、RHEL 7の同梱版からバージョンアップされました。
CentOSではなく、RHELの有償サブスクリプションを購入するメリットとして、Redhat社がメンテナンスしている同梱ソフトウェアのサポートが挙げられます。
その一方で、RHEL同梱版のソフトウェアは、各ソフトウェア開発元が配布している最新バージョンに追随されていないことが多々あります。
新しいバージョンのソフトウェアを使いたくてもRedhat社のサポートから外れてしまうため、RHEL 7同梱版の古いバージョンを仕方なく使用していたユーザにとっては、新しいバージョンのソフトウェアを使用できるようになったことは大きなメリットだと思います。
特に、開発系のエンジニアにとってはPHPやMySQL、Pythonあたりのメジャーバージョンアップは嬉しいのではないでしょうか。
また★マークを付けたnginxとNode.jsは、RHEL 8から新たに同梱されるソフトウェアに追加されました。今どきのトレンドを押さえたラインナップです。
Web/Proxy
- httpd 2.4.37
- ★nginx 1.14
DB
- MariaDB 10.3
- MySQL 8.0
- PostgreSQL 10
- Redis 5
クラスタリング
- Pacemaker 2.0.0
セキュリティ
- OpenSSH 7.8p1
仮想化
- qemu-kvm 2.12
ログ
- rsyslog 8.37.0
言語環境
- Python 3.6
- PHP 7.2
- Perl 5.24
- GCC 8.2
- Ruby 2.5
- ★Node.js 10
yumリポジトリ
RHEL 8では、RHEL 7までの製品種別(エディション)が無くなりました。リポジトリ名は統一されたものとなります。
リポジトリ構成も大きく変わり、Base OSとAppStreamの2種類となりました。
Base OS
OS構成上、最低限のパッケージ群。
RHEL 7のminimalインストールで指定されるパッケージグループのようなものです。
AppStream
Base OSを基盤に動作するパッケージ群。
AppStreamはモジュール機能を持ち、同じソフトウェアについて複数のバージョンを提供しているのが大きな特徴です。
モジュール機能で提供されるソフトウェアのバージョンは、RHEL 8のサポート期間とは異なるライフサイクルのものもあります。(例、Ver1を3年、Ver2を次の3年など)
Red Hat Insights
Red Hat Insightsは、今までRHELとは別製品で提供されていたシステム診断の機能です。
OS内のエージェントがシステム情報を収集し、Redhat社のWeb上でレポートしてくれます。
自前でシステム運用管理の仕組みを利用している場合や、閉域環境で使用している場合は特に縁のない機能かもしれませんが、システムの問題を分析してくれたり、解決手順のAnsible Playbookを作成してくれたり、機能としては面白そうです。
パッケージ管理システムの変更
パッケージ管理システムがDNFをベースとしたYum v4に変更されました。
yumコマンドはdnfコマンドに変更となります。今のところyumコマンドも後方互換として残されていますが、いずれは廃止となる予定です。
パッケージ管理に自前の運用スクリプトを使用している場合は、今後を見据えてdnfコマンドに対応させたほうがよいでしょう。
Pythonのバージョン変更
OS標準のPythonが2から3になります。
また、pythonコマンドがなくなり、python2とpython3の2つのコマンドで、実行するPythonのバージョンを明示する必要があります。
Python 2は今後廃止される予定なので、システム内で同バージョン向けのスクリプトを使用している場合は、Python 3への対応を進める必要があります。
WebUIの標準搭載
RHELを標準インストールすると、管理用のWebUIとしてcockpitがインストールされるようになりました。
システムの状態確認や、cockpitに対応したソフトウェアの設定変更が行えます。
構築時はあまり使わないかと思いますが、マニュアルベースで作業を行う運用オペレータ向けには便利な機能です。
firewalldのバックエンド変更
パケットフィルタリング機能について、firewalldのバックエンドがiptablesからnftablesに変更となります。
iptablesをiptablesコマンドで直接制御している環境の場合、nftコマンドを使用するよう変更する必要があります。
コンテナ関連の機能追加
巷で流行っているコンテナに関する機能が追加されました。
今までオンプレで開発していたシステムをコンテナ化する場合に便利かもしれません。
コンテナ管理ツール
シングルノード向けのコンテナ管理ツールとして、以下が新たに提供されます。
- podman(Podとコンテナの管理)
- buildah(コンテナイメージのビルド)
- skopeo(コンテナレジストリのクライアント)
- runc(コンテナ実行やビルドのランタイム)
コンテナ界でシェアの高いDockerはRHEL 8では廃止されました。ただし、podmanはdockerコマンドが使用できるので、それほど差異を気にする必要はありません。
また、RHEL 8のコンテナ管理ツール群はDockerのようにデーモンプロセスが不要です。systemdと連携させて、コンテナをサービス化することができ、Dockerとは差別化されています。
独自コンテナイメージ
RHEL 7,8をベースとしたUniversal Base Image(UBI)がRedhat社のコンテナレジストリで無償提供されています。
OSだけでなく、PHPやPythonの実行環境イメージもあるので、Docker Hubと同じような感覚で使えそうです。
RHELやコンテナ基盤製品のOpenShift上で実行する場合は、UBIもRedhat社のサポートが受けられます。
まとめ
既存機能の変更については、今のところ後方互換が保たれているものが多いものの、今後の旧機能廃止を見据えて早めに対策をしておいたほうがよいと感じました。
新機能の追加では、なんと言ってもコンテナ環境のインパクトが大きいです。
Dockerは採用せず、Redhat社としてのエコシステムを作りたいという意図が感じられます。
既にコンテナオーケストレータとしてOpenShiftを採用している場合は、Podmanを使用するのはアリかと思いますが、既にDocker + Kubernetesでコンテナ基盤を構築している場合は、もう少し既存環境のまま様子見かなという印象です。