RHELを無償利用する。

# はじめに
`CentOS`の方針が変わったことを受けて、商用Linuxの`RHEL`が16ノードまで本番環境含め無償利用することができるようになりましたが（以下参照）、方針が変わってから触っていなかったので、個人アカウントでサブスクリプション登録をして無償利用してみようと思います。

- [Red Hat Developer Program Terms and Conditions](https://developers.redhat.com/terms-and-conditions)

尚、以降の説明は「**Red Hatアカウント**」作成済みの前提で説明するため、個人アカウントを作成していない場合は[Red Hatのサイト](https://www.redhat.com/ja/global/japan)の「**ログイン**」→「**今すぐ登録する**」から個人用途で作成してください。

![013.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/dd4c29a9-3516-0088-2478-a56ea053f5ad.jpeg)

# RHELを無償利用する方法
やり方としては法人アカウントで利用する場合と同様となりますが、対象のサーバで検証・開発用サブスクリプションを登録すればサブスクリプションが有効になり、`yum`、`dnf`等の操作が行えるようになります。

Red Hatアカウントでログイン後、「**Red Hatカスタマーポータル**」の「**サブスクリプション**」タブから「**Red Hat Developer Subscription for Individuals**」を選択すると、サブスクリプションを購入していない無償利用で、16ノード分使用可能となっていることが以下のように確認できます。

![001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/e2a54e34-96f0-4dd0-9057-957ced70a387.jpeg)

# サブスクリプション登録方法
サブスクリプション登録するには大きく分けて以下のような方法があります。

- インターネット経由でのサブスクリプション登録（GUI操作）
- インターネット経由でのサブスクリプション登録（コマンド操作）
- ローカル環境でのサブスクリプション登録

## インターネット経由でのサブスクリプション登録（GUI操作）
サブスクリプションを登録するノードが直接インターネットに繋がっているようであれば簡単で、OSインストール時であればインストールメニューの「**RED HATに接続**」から、**Red Hatアカウント**の情報を入力して、「**登録**」を選択します。

![002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/034b4e26-c63b-d764-1084-fc81c0714a46.jpeg)

また、OSインストール後であれば「**設定**」→「**詳細**」→「**登録**」から**Red Hatアカウント**の情報を入力して、「**登録**」を選択します。

![003.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/a41f0c57-cbb2-eeac-a9e0-9694b60474ec.jpeg)

正常に登録できれば、「**Red Hatカスタマーポータル**」の「**エンタイトルメントの使用率**」が消費されていることが確認できます。

![004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/2cf7447f-e63a-dc4f-8227-28f32eed1802.jpeg)

## インターネット経由でのサブスクリプション登録（コマンド操作）
コマンド操作を行う場合、GUI操作の場合と異なり、一度で登録まで行うことができないため、`Red Hat`に接続するためのアカウントの登録を行った後、サブスクリプションをアタッチする流れとなります。

以下`register`コマンドで**Red Hatアカウント**を登録します。

尚、`--username`、`--password`オプションを付与しなければ対話式でユーザ名、パスワードを設定できます。

```shell:RedHatアカウント情報の登録
subscription-manager register --username='[ユーザ名]' --password='[パスワード]'
```

上述の**Red Hatアカウント情報の登録**を行うことで、インターネット経由でサブスクリプション登録できるようになるため、以下コマンドでサブスクリプションをアタッチします。

```shell:サブスクリプションのアタッチ（オート設定）
subscription-manager attach --pool=[プールID]
```

尚、アタッチできるサブスクリプションが複数ある場合は、サブスクリプションの**プールID**を指定する必要があるため、以下コマンドで「**Red Hat Developer Subscription for Individuals**」の**プールID**を確認します。

```shell:利用可能なサブスクリプションの確認
subscription-manager list --available
+-------------------------------------------+
    利用可能なサブスクリプション
+-------------------------------------------+
サブスクリプション名:     Red Hat Developer Subscription for Individuals
（略）
プール ID:                xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
（略）
```

先ほど確認した**プールID**を付与させてアタッチすることで、複数アタッチできるサブスクリプションがある場合でも登録できます。

```shell:サブスクリプションのアタッチ（プールID指定）
subscription-manager attach --pool=[プールID]
```

## ローカル環境でのサブスクリプション登録
インターネットに直接繋がっていなかったり、社内ポリシーでサーバから直接接続できなかったりする場合、以下手順を行うことで、サブスクリプション登録を行うことができます。

- RedHatカスタマーポータルからシステムの作成
- 作成したシステムにサブスクリプションのアタッチ
- 証明書のダウンロード
- 証明書のインポート

### RedHatカスタマーポータルからシステムの作成
「**Red Hatカスタマーポータル**」の「**システム**」から「**新規作成**」を選択します。

![005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/80287332-f7f0-9618-c759-7e987b4d4e65.jpeg)

各環境に合わせてシステムプロファイルを新規作成します。

今回は**vmrhel01**という名前のプロファイルで作成することとします。

![006.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/4c529481-3f9c-0706-9243-437645b19bfe.jpeg)

### 作成したシステムにサブスクリプションのアタッチ
先ほど作成したシステムプロファイルにサブスクリプションをアタッチします。

以下「**サブスクリプション**」タブから「**サブスクリプションのアタッチ**」を選択します。

![007.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/5c74c500-9986-e879-0a6e-f7a96dd21af5.jpeg)

アタッチするサブスクリプションを選択して、「**サブスクリプションのアタッチ**」を選択します。

![008.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/aa9fae50-5e5e-bd77-5119-aa3dcc597b13.jpeg)

### 証明書のダウンロード
サブスクリプションをアタッチすると、「**証明書のダウンロード**」から証明書をダウンロードできるようになるので、ZIP形式のファイルをダウンロードして、SCP等で対象のノードに転送しておきます。

![009.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/de3bf639-c226-b763-1c6b-b8f87918d26e.jpeg)

### 証明書のインポート
対象のノードに転送したZIPファイルを`unzip`コマンドで展開して、中の**PEMファイル**を取り出します。

ZIPファイルの中に更にZIPファイルが格納されているため、全て展開して**PEMファイル**を適当なディレクトリ（今回は/tmp）に移動しておきます。

```shell:証明書のZIPファイルの展開
unzip xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_certificates.zip
unzip consumer_export.zip
mv export/entitlement_certificates/xxxxxxxxxxxxxxxxxxx.pem /tmp
```

先ほど移動した**PEMファイル**を以下コマンドでインポートして、正常にインポートされれば完了です。

```shell:証明書のインポート
subscription-manager import --certificate=/tmp/xxxxxxxxxxxxxxxxxxx.pem
証明書 xxxxxxxxxxxxxxxxxxx.pem は正常にインポートされました
```

`dnf repolist`コマンドで以下のように表示されれば、証明書を正常にインポートできているので問題ありません。

```shell:dnf_repolistコマンド実行結果
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません
repo id                            repo の名前
rhel-8-for-x86_64-appstream-rpms   Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
rhel-8-for-x86_64-baseos-rpms      Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
```

# サブスクリプション登録解除方法
使わなくなったノードにアタッチされているサブスクリプションを解除するには以下のような方法があります。

- インターネット経由でのサブスクリプション登録解除（GUI操作）
- インターネット経由でのサブスクリプション登録解除（コマンド操作）
- RedHatカスタマーポータルからの登録解除

## インターネット経由でのサブスクリプション登録解除（GUI操作）
「**設定**」→「**詳細**」→「**登録解除**」を選択することで登録を解除できます。

解除後は、「**Red Hatカスタマーポータル**」のサブスクリプション使用数も解放されるため、他のノードで使用できる状態になります。

![010.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/0e29d486-6b46-cebd-254b-0c9bd85140af.jpeg)

## インターネット経由でのサブスクリプション登録解除（コマンド操作）
コマンド操作としては、登録時の逆で、サブスクリプションをデタッチした後、アカウント情報を解除することで行えます。

```shell:サブスクリプションのデタッチ
subscription-manager remove --all
```

```shell:RedHatアカウント情報の登録解除
subscription-manager unregister
```

アカウント情報登録解除後、`subscription-manager list`コマンドで以下のように表示されればデタッチ＆登録解除が完了しています。

```shell:デタッチ＆登録解除後のコマンド結果
+-------------------------------------------+
    インストール済み製品のステータス
+-------------------------------------------+
製品名:           Red Hat Enterprise Linux for x86_64
製品 ID:          479
バージョン:       8.5
アーキテクチャー: x86_64
状態:             不明
状態の詳細:
開始:
終了:

```

## RedHatカスタマーポータルからの登録解除
インターネットに繋がっていない環境で証明書インポートで登録した場合や、登録解除せずに対象ノードを削除した場合、「**Red Hatカスタマーポータル**」から登録解除を行います。

「**Red Hatカスタマーポータル**」→「**システム**」→対象ノードの「**サブスクリプション**」から「**削除**」を行うことでサブスクリプションのデタッチを行えます。

![011.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/ff347a23-dbc5-77ab-4131-57723411ba64.jpeg)

また、「**詳細**」タブから「**システムの削除**」を行うことで対象ノードの登録を削除します。

![012.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/95879774-7057-b065-8618-177438341ac8.jpeg)

### インポートした証明書情報のクリア
「**ローカル環境でのサブスクリプション登録**」でインポートした証明書をクリアする場合、対象ノードで以下コマンドを実行することにより証明書情報をクリアすることができます。

```shell:証明書情報のクリア
subscription-manager clean
```

クリア後、`dnf repolist`コマンドで以下のように表示されれば完了です。

```shell:証明書情報クリア後のコマンド結果
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

このシステムは、エンタイトルメントサーバーに登録されていません。subscription-manager で登録できます。

利用できるリポジトリーがありません
```

# Red Hat Developer Subscription for Individualsで提供されているコンテンツ
「**Red Hat Developer Subscription for Individuals**」のサブスクリプションでは2022年2月現在以下のようなコンテンツが提供されています。

購入前に試しに使ってみたいといった程度の使い方であれば、無償で以下のようなコンテンツが試せるというのは業務で使う身としてはありがたい限りです。

```text:提供コンテンツ
Red Hat Enterprise Linux High Availability - Update Services for SAP Solutions
Red Hat CodeReady Linux Builder for IBM z Systems - Extended Update Support
Red Hat Enterprise Linux Atomic Host
JBoss Enterprise Application Platform from RHUI
Red Hat Enterprise Linux Atomic Host Beta
JBoss Enterprise Web Server from RHUI
Red Hat Developer Tools (for RHEL Server)
Red Hat Container Images
Red Hat 3scale API Management Platform
Red Hat Developer Tools Beta (for RHEL Server)
Red Hat Container Images Beta
Red Hat OpenShift Enterprise JBoss EAP add-on
Red Hat Software Collections (for RHEL Server for ARM)
Red Hat Software Collections Beta (for RHEL Server for ARM)
Red Hat Migration Toolkit
Red Hat OpenShift Enterprise JBoss FUSE add-on
Red Hat OpenShift Enterprise JBoss A-MQ add-on
Red Hat JBoss Core Services from RHUI
Red Hat Enterprise Linux for x86_64
Red Hat Enterprise Linux Resilient Storage for x86_64
Red Hat Enterprise Linux Resilient Storage for x86_64 - Extended Update Support
Red Hat Enterprise Linux Scalable File System (for RHEL Server)
dotNET on RHEL (for RHEL Server)
dotNET on RHEL Beta (for RHEL Server)
Red Hat Enterprise Linux Scalable File System (for RHEL Server) - Extended Update Support
Red Hat Ansible Automation Platform
Oracle Java (for RHEL Server)
Red Hat Enterprise Linux for SAP HANA for x86_64
OpenJDK Java (for Middleware)
Red Hat Enterprise Linux for Real Time
Red Hat Software Collections (for RHEL Server)
Red Hat AMQ Interconnect
Oracle Java (for RHEL Server) - Extended Update Support
Red Hat Openshift Application Runtimes for IBM Power LE
Red Hat Developer Tools (for RHEL Server for ARM)
RHEL for SAP - Extended Update Support
Red Hat Developer Tools Beta (for RHEL Server for ARM)
Red Hat S-JIS Support (for RHEL Server) - Extended Update Support
RHEL for SAP HANA - Extended Update Support
Red Hat Software Collections Beta (for RHEL Server)
Red Hat Ansible Engine
Red Hat Enterprise Linux Server
Red Hat OpenShift Container Platform
Red Hat Container Development Kit
Red Hat CodeReady Linux Builder for x86_64
MRG Realtime
Red Hat CodeReady Linux Builder for ARM 64
Red Hat Enterprise Linux High Performance Networking (for RHEL Server)
Red Hat Developer Toolset (for RHEL Server)
Red Hat Enterprise Linux High Performance Networking (for RHEL Server) - Extended Update Support
Red Hat Enterprise Linux High Performance Networking (for RHEL Compute Node)
Red Hat Build of Quarkus
Red Hat OpenShift Application Runtimes Beta
Red Hat Enterprise Linux EUS Compute Node
Red Hat Enterprise Linux for x86_64 - Extended Update Support
Red Hat Openshift Application Runtimes
Red Hat Enterprise Linux for ARM 64
Red Hat Enterprise Linux for IBM z Systems - Extended Update Support
Red Hat Beta
Red Hat EUCJP Support (for RHEL Server) - Extended Update Support
JBoss Enterprise Application Platform
JBoss Enterprise Web Platform
RHEL for SAP (for IBM Power LE) - Update Services for SAP Solutions
Red Hat Developer Suite v.3
Red Hat Enterprise Linux Server - Update Services for SAP Solutions
Red Hat Enterprise Linux High Availability (for IBM z Systems) - Extended Update Support
Red Hat Enterprise Linux for SAP Applications for x86_64
RHEL for SAP - Update Services for SAP Solutions
Red Hat JBoss AMQ Clients
RHEL for SAP HANA - Update Services for SAP Solutions
Red Hat Enterprise Linux Resilient Storage for IBM z Systems - Extended Update Support
Red Hat OpenShift Enterprise JBoss EAP add-on Beta
Red Hat CodeReady Linux Builder for x86_64 - Extended Update Support
Red Hat JBoss Middleware
Red Hat CodeReady Workspaces for OpenShift
Red Hat JBoss Data Grid
Red Hat JBoss Core Services
Red Hat Enterprise Linux High Availability for x86_64
Red Hat Enterprise Linux High Availability for x86_64 - Extended Update Support
Red Hat Enterprise Linux Load Balancer (for RHEL Server)
Red Hat Enterprise Linux Load Balancer (for RHEL Server) - Extended Update Support
```

尚、提供コンテンツは「**Red Hatカスタマーポータル**」の「**サブスクリプション**」→「**Red Hat Developer Subscription for Individuals**」の「**概要**」タブか、`subscription-manager list`コマンドで確認することができます。

# おわりに
`RHEL`の操作を確認したりする際には、今までは`CentOS`を使用していましたが、無償利用枠の方針変更により、個人で`RHEL`を16ノード分まで利用できるようになったことは私としてはうれしい限りです。

使わなくなったノードのサブスクリプション登録の解除をこまめにやっていけば個人用途で16ノード分を使い切ることもあまりないかと思うので、今まで`RHEL`を触ってこなかった方も`RHEL`に乗り換えてみてはいかがでしょうか。