zaki work log

作業ログやら生活ログやらなんやら

オフライン環境へのRHEL8.6インストールとサブスクリプション割り当て

ちょっと構築する機会があったのでメモ。

OSのインストール

インストール用のisoファイルを入手し、これは普通に。
メディアから起動し、OSのインストールを行う。
お試しとして、今回は最小構成設定のインストール。

今回の環境は、ESXi上のVMで、CPUは2コア・メモリ8GBで、閉塞ネットワークには繋がっている状態。
(インターネットへの接続は無し)

サブスクリプション割り当て

オフライン環境のサブスクリプション割り当ての手順はこちら。

access.redhat.com

大まかな流れは、以下の通り。

  1. カスタマポータル上で手動でシステムを登録
  2. 証明書をダウンロード
  3. ダウンロードした証明書をオフラインRHELsubscription-manager で登録

カスタマポータル上でシステム登録

インターネット接続できるPCのブラウザでカスタマポータルへアクセスし、システムの画面で、「新規作成」を押下。

システム情報の入力画面になるので、ホスト名やCPU数などの項目を入力。
今回はVMなので仮想システムを選択。

システムを作成すると、サブスクリプションのアタッチボタンが表示されるので押下。

割り当て可能なサブスクリプションがチェックできるようになるので、使用するサブスクリプションをチェックして「サブスクリプションのアタッチ」を押下

証明書をダウンロードできる画面に遷移するので、「証明書のダウンロード」を押下。

これで証明書ファイル(pem形式)を含むzipファイルがダウンロードできる。
このzipファイルまたは展開したpemファイルをサブスクリプション登録したいRHELへ転送する。

証明書ファイルを使ったサブスクリプション登録

ファイルシステム上にダウンロードしたpemファイルを配置し、subscription-manager import --certificate コマンドを使ってインポートする。
複数のサブスクリプション割り当ての場合は、ファイル数分実行すればOK

[root@rhel8-restricted ~]# subscription-manager import --certificate /tmp/4199243939243262298.pem 
証明書 4199243939243262298.pem は正常にインポートされました
[root@rhel8-restricted ~]# subscription-manager import --certificate /tmp/8034611573323406627.pem 
証明書 8034611573323406627.pem は正常にインポートされました
[root@rhel8-restricted ~]# 

Yumリポジトリ設定

デフォルトのリポジトリの無効化

オフライン環境でセットアップしたRHELでも、デフォルトでは https://cdn.redhat.com/リポジトリを見に行くように設定されているので、これを無効にする。

[root@rhel8-restricted etc]# 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)
[root@rhel8-restricted etc]# dnf config-manager --disable rhel-8-for-x86_64-appstream-rpms rhel-8-for-x86_64-baseos-rpms
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

ISOイメージ内のパッケージファイルをYumリポジトリとして利用する

access.redhat.com

マウント

まずはDVDのマウント。
ESXiの場合で、ホストの設定としてデータストアのISOファイルを使用する設定にしてる場合であれば、/etc/fstab に以下設定を追加しておき、mount -amount /mnt/cdrom でメディアをマウントする。

/dev/cdrom              /mnt/cdrom           iso9660    loop           0 0
[root@rhel8-restricted ~]# ls -F /mnt/cdrom/
AppStream/  EULA                     RPM-GPG-KEY-redhat-release  images/
BaseOS/     GPL                      TRANS.TBL                   isolinux/
EFI/        RPM-GPG-KEY-redhat-beta  extra_files.json            media.repo

ISOファイルがファイルシステム上にある場合は、/dev/cdrom のところをファイルシステム上のパスに置き換えればOK

/path/to/rhel-8.6-x86_64-dvd.iso /mnt/tmp iso9660 loop 0 0 

mountコマンドを使う場合は以下。

# mount -o loop /path/to/rhel-8.6-x86_64-dvd.iso /mnt/tmp

リポジトリ設定

ファイルを確認できたら、Yumリポジトリ設定を行う。
ファイル名は任意なので、サンプルとして /etc/yum.repos.d/local.repo ファイルを作成。内容は以下の通り。
これはマウントポイントが /mnt/cdrom の場合。異なる場合は baseurl= の行の設定を環境に合わせる。

[dvd-BaseOS]
name=DVD for RHEL - BaseOS
baseurl=file:///mnt/cdrom/BaseOS
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[dvd-AppStream]
name=DVD for RHEL - AppStream
baseurl=file:///mnt/cdrom/AppStream
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

最後にキャッシュをクリアする。

[root@rhel8-restricted ~]# yum clean all
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません
13 ファイルが削除されました

これでDVD内のパッケージをYumリポジトリとして参照できるようになるので、追加のパッケージインストールなどがあればdnf installが可能になる。

[root@rhel8-restricted ~]# dnf repolist
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません
repo id                              repo の名前
dvd-AppStream                        DVD for RHEL - AppStream
dvd-BaseOS                           DVD for RHEL - BaseOS

その他、制限環境で使える参考情報

zaki-hmkc.hatenablog.com

zaki-hmkc.hatenablog.com

zaki-hmkc.hatenablog.com