【OCI_23】OCI上にRed Hat Enterprise Linuxのインスタンスを作成する
OCIのコンピュート・インスタンスのイメージ選択で「Red Hat」を選択すると選択できるイメージは表示されておらず、RHELイメージをダウンロードして、カスタムイメージとしてOCIにインポートしてくださいとありました。OracleLinuxやWindowsのようにイメージが準備されているわけではないようです。

以下参考サイトを確認するとカスタム・イメージを作成する方法は2とおりありそうでした。
今回はこの2つの方法について検証してみました。パターン2のほうがイメージファイルをダウンロードしてカスタム・イメージへ変換するだけなのでそちらのほうが簡単でした。
参考サイト
[Oracle Cloud] Red Hat Enterprise Linux (RHEL) インスタンスを作成してみてみた
https://qiita.com/shirok/items/088b89329af1986d60feHow to install RHEL a new way with image builder
https://www.redhat.com/ja/blog/rhel-image-builder
今回の検証は、おそらくですがOCIの無償アカウントでは実行できない可能性がありますのでご注意ください。
以下の画面が表示されたら有償アカウントでないと作業できないと思われます。

当検証は、有償アカウントで検証しています。無償アカウントと挙動が異なる場合がありますのでご了承ください。
目次
【パターン1】Red Hat Enterprise Linux for Business Developersでイメージを作成する
RedHatアカウントがない場合は、作成する必要があります。
Red Hat Enterprise Linux for Business Developersでイメージを作成
以下のURLにアクセスして「Access now」をクリックします。
Red Hat Enterprise Linux for Business Developers
https://developers.redhat.com/products/rhel/business

私の場合、もう少し追加情報をくださいと同意の画面が表示されたので指示に従い、「submit」をクリックします。

認証のためメールが送信されるので受信したメールで認証します。

認証されました。

ブラウザ画面が自動更新されない場合は、更新します。
「Choose your image」を選択します。

Image output画面でイメージを選択します。
OSバージョンを選択します。

アーキテクチャを選択します。

デプロイ先の環境を選択して「Next」をクリックします。

組織IDとアクティベーションキーが自動で生成されます。現時点で何に必要かわかりませんが念のため控えておきます。(その後も検証においては利用することはありませんでした)
Registerの項目で「Organization ID」を控えておきます。

「Activation key」を控えて「Next」をクリックします。

Securityの項目は、そのまま「Next」をクリックします。

File system configurationの項目は、そのまま「Next」をクリックします。

Repeatable buildの項目は、そのまま「Next」をクリックします。

Custom repositoriesの項目は、そのまま「Next」をクリックします。

Additional packagesの項目は、そのまま「Next」をクリックします。

Usersの項目は、そのまま「Next」をクリックします。

Timezoneの項目は、「Japan」を選択し、「Next」をクリックします。

Localeの項目は、以下を選択し、「Next」をクリックします。
Languages : Japanese – Japan(ja_JP.UTF-8)
Keyboard : jp

Hostnameの項目は、任意の名前を入力し、「Next」をクリックします。

Kernelの項目は、「kernel」を選択し、「Next」をクリックします。

Firewallの項目は、そのまま「Next」をクリックします。

Systemd servicesの項目は、そのまま「Next」をクリックします。

Ansible Automation Platformの項目は、そのまま「Next」をクリックします。

First boot configurationの項目は、そのまま「Next」をクリックします。

Detailsの項目は、そのまま「Next」をクリックします。

Reviewの項目で内容を確認し、「Create blueprint」をクリックします。

Closeをクリックします。

Blueprintsの項目で「Build images」をクリックします。

イメージの作成が始まります。

20分くらいで作成されました。
ビルドが完了したら、「Object Storage URL」をコピーするために「Image link」をクリックします。

Launch with Oracle Cloud Infrastructure画面が表示されるので「Copy」ボタンを押してObject Storage URLをコピーし、Closeします。
OCIでカスタム・イメージを利用する際、この「Object Storage URL」を参照します。
chatgptに「Object Storage URL」について聞いてみたところ、OCI がイメージ管理のために用意した内部 Object Storageとのことでした。

Red Hatコンソールでの作業は、ここまでで次はOCIコンソール作業に移ります。
OCIコンソールでRHELイメージをインポート
OCIコンソールでRHELサーバイメージをインポートします。
OCIコンソール左上のハンバーガーメニューからコンピュート内の「カスタム・イメージ」を選択します。

カスタム・イメージ画面で「イメージのインポート」を選択します。

イメージのインポート画面で以下を入力、選択し、「イメージのインポート」をクリックします。
コンパートメントに作成:作成したいコンパートメント
名前:任意名(例:rhel9-test)
オペレーティング・システム:RHEL
オブジェクト・ストレージURL:事前にRed HatコンソールでコピーしておいたURL
イメージ・タイプ:QCOW2
起動モード:準仮想化モード(他はデフォルト)


「イメージのインポート」をクリックすると「OCIDのカスタムイメージカウントの最大割り当て量に達しました。」とAPIエラーになりました。

おそらく無償アカウントであることが原因と思われるため、有償アカウント(Pay As You Go)へ変更してみます。
有償アカウントへ移行すると無償アカウントへ戻せないので実施される場合は、十分考慮のうえ実施してください。
有償アカウントへ変更後にカスタム・イメージを再作成すると成功しました。インポート中であることがわかります。

「作業リクエスト」タブを選択すると状態が「進行中」で進行状況が %(パーセント)表示されます。

状態が「成功」、進行状況が 100%(パーセント)になることを確認します。

OCIコンソールでインスタンス作成
カスタム・イメージ画面右上の「インスタンスの作成」をクリックします。

基本情報は以下のとおり入力、選択します。
「名前」は、任意の名前を入力します。
「コンパートメント」は権限のあるコンパートメントが表示されていることを確認します。

イメージは、カスタム・イメージが選択されていることを確認します。
シェイプはデフォルトのままにしています。

「次」をクリックします。

セキュリティ画面はデフォルトのままで「次」をクリックします。

ネットワーキングは、以下のとおり入力、選択します。
「VNIC名」は、デフォルトの空欄のままとします。
「プライマリ・ネットワーク」は、「既存の仮想クラウド・ネットワークを選択」を選択し、自身の権限のあるコンパートメント、作成したVCNを選択します。
「サブネット」は、「既存のサブネットを選択」を選択し、自身の権限のあるコンパートメント、サブネットを選択します。

「プライベートIPv4アドレス」は、「プライベートIPv4アドレスの自動割当て」を選択します。
「パブリックIPv4アドレスの自動割当て」は、デフォルトのままONにします。

「IPv6アドレス」は、デフォルトのままOFFにします。
「SSHキーの追加」は、「キー・ペアを自動で生成」を選択し、「秘密キーのダウンロード」、「公開キーのダウンロード」をクリックし、ダウンロードしておきます。
「次」をクリックします。

ブート・ボリューム画面はデフォルトのままで「次」をクリックします。

基本情報の内容を確認し、「作成」をクリックします。

作業リクエスト画面で「成功」となることを確認します。

インスタンスが作成されました。

SSHでインスタンスへログイン
ユーザーは何を指定すればよいかわからないのでまずはOracleLinuxと同じ「opc」で試してみます。
OracleLinuxのようにopcユーザーのパスなし(秘密鍵あり)ではログインできませんでした。

次にrootユーザーでログインを試すとログインできませんでしたが、以下のメッセージが表示されました。
Please login as the user “cloud-user” rather than the user “root”.
ユーザー「root」ではなく、ユーザー「cloud-user」としてログインしてください。

メッセージどおり「cloud-user」のパスなし(秘密鍵あり)でログインを試すとログインできました!


sudo su - とするとrootユーザーにも昇格できました。

RedHatのサブスクリプションについては、パターン2の検証の後に記載しています。
【パターン2】Red Hat Customer Portal からイメージをダウンロードする
パターン1では、Red Hat Enterprise Linux for Business Developersでイメージを作成しました。
今回のパターン2では、Red Hat Customer Portal からイメージをダウンロードしてカスタム・イメージを作成します。
Red Hat から RHEL イメージをダウンロード
RedHatアカウントがない場合は、作成する必要があります。
QCOW2 イメージを Red Hat Customer Portal からダウンロードするので以下ページへアクセスして「ダウンロード」をクリックします。
https://access.redhat.com/

製品のダウンロード画面「Red Hat Enterprise Linux」のリンクをクリックします。

画面を下へスクロールしてVirtualization Imagesの項目でファイル名が「qcow2」となっているイメージをダウンロードします。

1.15GBのQCOW2ファイルがダウンロードされました。

OCIコンソールでObject Storage へ RHELイメージをアップロード
ダウンロードしたRHELイメージをOCIのObject Storageへアップロードします。
OCIコンソールへログインし、Object Storageがない場合は作成します。
今回は、アップロードのためだけにObject Storage「bucket-20260101」を作成しました。

ダウンロードしたイメージ「rhel-9.7-x86_64-kvm.qcow2」をアップロードします。

確認画面で内容を確認し、「オブジェクトのアップロード」をクリックします。

アップロードできました。

OCIコンソールでカスタム・イメージのインポート
OCIコンソールでRHELサーバイメージをインポートします。
OCIコンソール左上のハンバーガーメニューからコンピュート内の「カスタム・イメージ」を選択します。

カスタム・イメージ画面で「イメージのインポート」を選択します。

イメージのインポート画面で以下を入力、選択し、「イメージのインポート」をクリックします。
コンパートメントに作成:作成したいコンパートメント
名前:任意名(例:rhel9-test)
オペレーティング・システム:RHEL
オブジェクト・ストレージURL:事前にRed HatコンソールでコピーしておいたURL
イメージ・タイプ:QCOW2
起動モード:準仮想化モード(他はデフォルト)


カスタム・イメージがインポート中になりました。

「作業リクエスト」タブを選択すると状態が「進行中」で進行状況が %(パーセント)表示されます。

状態が「成功」、進行状況が 100%(パーセント)になることを確認します。

OCIコンソールでインスタンス作成
カスタム・イメージ画面右上の「インスタンスの作成」をクリックします。

基本情報は以下のとおり入力、選択します。
「名前」は、任意の名前を入力します。
「コンパートメント」は権限のあるコンパートメントが表示されていることを確認します。

イメージは、カスタム・イメージが選択されていることを確認します。
シェイプはデフォルトのままにしています。
「次」をクリックします。

セキュリティ画面はデフォルトのままで「次」をクリックします。

ネットワーキングは、以下のとおり入力、選択します。
「VNIC名」は、デフォルトの空欄のままとします。
「プライマリ・ネットワーク」は、「既存の仮想クラウド・ネットワークを選択」を選択し、自身の権限のあるコンパートメント、作成したVCNを選択します。
「サブネット」は、「既存のサブネットを選択」を選択し、自身の権限のあるコンパートメント、サブネットを選択します。


「IPv6アドレス」は、デフォルトのままOFFにします。

「SSHキーの追加」は、パターン1で利用した秘密キー、公開キーを利用します。「公開キー・ファイル(.pub)のアップロード」を選択し、「SSH公開キー」を「ファイルをドロップするか選択」から公開キーアップロードしておきます。
「次」をクリックします。

ブート・ボリューム画面はデフォルトのままで「次」をクリックします。

基本情報の内容を確認し、「作成」をクリックします。

作業リクエスト画面で「成功」となることを確認します。

インスタンスが作成されました。

SSHでインスタンスへログイン
cloud-userユーザーで ssh接続してログインすることができました。


Red Hat Customer Portal へシステム登録
OCIのインスタンスがインターネット接続できることが前提の作業となります。
Red Hat Customer Portal へシステム登録
私は知らなかったのですが、Red Hat Enterprise Linuxでは2024年10月下旬から、全てのアカウントに対してSimple Content Access(SCA)という機能が強制され、従来のsubscription-managerコマンドで、システムの登録と、所有しているサブスクリプションとの対応づけを行う必要がなくなったそうです。
chatgptにSCAについて聞くと「RHELを使うためにサブスクリプションを1台ずつ割り当てる作業をやめて、登録したらすぐ使えるようにした仕組み」だそうです。
ですので、subscription-managerコマンドで、システムの登録だけ行えばyumコマンドでアップデートができるようになるはずですので進めたいと思います。
rootへ昇格します。

rootユーザーで以下コマンドを実行し、システムをRed Hat Customer Portal へ登録します。
subscription-manager register

現在の登録状態を確認します。
Overall Status が Registered(登録済み)であることが確認できます。
subscription-manager status

リポジトリが有効かどうか確認します。
以下2つが表示されたのでdnfコマンドが利用できそうです。
subscription-manager repos –list-enabled

システムで有効なリポジトリーを一覧表示します。
dnf repolist

リポジトリにアクセスして最新のパッケージに関するリストを取得します。
dnf check-update

まとめ
今回は、OCI上にRed Hat Enterprise Linuxのインスタンスを作成する方法について2とおり検証することができ、また、RedHatのサブスクリプションの割り当て方法についても確認することができました。
以下、他の記事をまとめた一覧です。OCI以外にAWSもまとめています。