2.6. Image Mode Containerfile におけるユーザーとグループの設定
異なるホストビルド間で切り替える場合は、Containerfile 内の永続的なユーザーとグループを起動可能なコンテナーイメージに対して定義する必要があります。これにより、デプロイ時や既存ホストを移行するための bootc switch 実行時に、インフラストラクチャー全体で一貫した権限を維持できます。
一部のユーザー ID とグループ ID は rhel-bootc イメージ と RHEL for Edge 間で異なります。これは、ssh_keys などの複数のグループとユーザーに影響します。その結果、ID が誤って指定されたグループに秘密鍵が所属するため、公開鍵を使用してエッジシステムにアクセスできなくなります。
Image Mode システムは、altfiles を使用して、/user/lib/passwd のユーザーと /user/lib/group のグループを管理します。この問題を回避するには、既存の RHEL for Edge システムのグループとユーザーの情報を抽出し、Containerfile の一部として固定する必要があります。Containerfile を設定して、ローカルの lib/group ファイルをコンテナーイメージにコピーします。
秘密鍵の権限は手動で変更できます。/etc フォルダーはエッジシステムで変更可能です。ただし、bootc switch コマンドを実行した後、イメージモードベースのシステムでは ssh_keys グループが ID 999 に設定されるため、問題は解決されません。この値は RHEL bootc ベースイメージから取得され、このように ID 101 から ID 999 にドリフトされるため、エッジシステムは SSH 経由でアクセスできなくなります。この問題を解決するには、次の手順に従います。
前提条件
-
既存の RHEL for Edge
rpm-ostreeベースのシステム。 - RHEL 9 システムをサブスクライブしている。詳細は、RHEL システム登録のスタートガイド ドキュメントを参照してください。
- コンテナーレジストリーがある。レジストリーをローカルに作成することも、Quay.io サービスで無料アカウントを作成することもできます。Quay.io アカウントを作成するには、Red Hat Quay.io ページを参照してください。
- 実稼働用または開発者サブスクリプションを持つ Red Hat アカウントがある。無料の開発者サブスクリプションは、Red Hat Enterprise Linux Overview ページで入手できます。
- registry.redhat.io に対して認証済みである。詳細は、Red Hat コンテナーレジストリーの認証 の記事を参照してください。
手順
RHEL for Edge システムからユーザーとグループの情報を抽出します。
$ mkdir -p ./usr/lib $ ssh admin@192.168.100.50 'cat /lib/passwd' > ./usr/lib/passwd $ ssh admin@192.168.100.50 'cat /lib/group' > ./usr/lib/groupContainerfile で指定して、bootc ベースのシステムで欠けている RHEL for Edge パッケージを含めます。さらに、COPY コマンドを使用して、RHEL for Edge システムから抽出された
groupとpasswdの内容を追加します。以下に例を示します。FROM registry.redhat.io/rhel9/rhel-bootc WORKDIR /tmp RUN dnf -y install ModemManager \ NetworkManager-wifi \ NetworkManager-wwan \ audit \ checkpolicy \ clevis \ clevis-dracut \ clevis-luks \ clevis-pin-tpm2 \ clevis-systemd \ containernetworking-plugins \ dnsmasq \ dracut-config-generic \ fdo-client \ fdo-owner-cli \ firewalld \ firewalld-filesystem \ greenboot \ greenboot-default-health-checks \ grubby \ ignition \ ignition-edge \ ipset \ iwl100-firmware \ iwl1000-firmware \ iwl105-firmware \ iwl135-firmware \ iwl2000-firmware \ iwl2030-firmware \ iwl3160-firmware \ iwl5000-firmware \ iwl5150-firmware \ iwl6050-firmware \ iwl7260-firmware \ libsecret \ pinentry \ policycoreutils-python-utils \ python3-distro \ python3-setools \ rsync \ setools-console \ tmux \ traceroute \ usbguard \ usbguard-selinux \ wireless-regdb \ wpa_supplicant COPY etc /etc # You can find the passwd and group content that were extracted from the RHEL for Edge system usr/lib/ in your current working directory. You can copy the content into the container image with the following step: COPY usr /usrbootc イメージをビルドし、レジストリーにプッシュします。
$ podman build -f Containerfile -t quay.io/<namespace>/<image>:<tag> . $ podman push quay.io/<namespace>/<image>:<tag>新しく作成された起動可能なコンテナーイメージに対して
bootc switchコマンドを実行します。$ ssh admin@192.168.100.50 $ sudo bootc switch quay.io/<namespace>/<image>:<tag> $ sudo reboot
検証
エッジシステムを起動可能なコンテナーイメージで再起動した後、/lib/passwd と /lib/group の内容が OSTree システムから抽出された内容と一致していることを確認します。
/lib/passwdの内容を確認します。$ cat /lib/passwd/lib/groupの内容を確認します。$ cat /lib/group
2.6.1. RHEL 9.6 の raw イメージデプロイメントをイメージモードに変換する リンクのコピーリンクがクリップボードにコピーされました!
raw イメージとしてデプロイされた Edge 用に RHEL 9.6 以降を使用して、それを Image Mode for RHEL に変換します。変換後、現在のオペレーティングシステムを起動可能なコンテナーイメージにリベースすることで、将来のライフサイクル管理のための bootc update ワークフローを有効にできます。
前提条件
-
既存の 9.6 RHEL for Edge が
rawイメージとともにインストールされている。
手順
- イメージを更新します。RHEL for Edge イメージの更新 を参照してください。
既存のイメージを RHEL Image Builder からイメージモードに切り替えます。
rhel-bootcからイメージをビルドします。以下に例を示します。$ cat Containerfile FROM registry.redhat.io/rhel9/rhel-bootc:latest RUN dnf install -y \ clevis \ clevis-dracut \ clevis-luks \ fdo-client \ fdo-owner-cli
現在のディレクトリーの
Containerfileを使用して <image> イメージをビルドします。$ podman build -t quay.io/<namespace>/<image>:<tag> .イメージをレジストリーにプッシュします。
$ podman push quay.io/<namespace>/<image>:_<tag>_デバイス上で
bootc switchを実行します。$ bootc switch quay.io/<namespace>/<image>:_<tag>_systemctl rebootを実行します。$ sudo systemctl reboot
検証
RHEL for Edge システムに接続し、
bootc statusを使用します。# bootc status