4.3. Red Hat Edge Manager の bootc オペレーティングシステムイメージのビルド
				デバイスを Red Hat Edge Manager で管理できるように準備するには、Red Hat Edge Manager エージェントを含む bootc オペレーティングシステムイメージをビルドします。次に、デバイス用のオペレーティングシステムディスクイメージをビルドします。
			
詳細は、以下のセクションを参照してください。
4.3.1. 前提条件
					bootc オペレーティングシステムイメージをビルドするには、次の前提条件を確認してください。
				
- 
							podmanバージョン 5.0 以降とskopeoバージョン 1.14 以降をインストールする。コンテナーツールの取得 を参照してください。
- 
							bootc-image-builderをインストールする。bootc-image-builder のインストール を参照してください。
4.3.2. Red Hat Edge Manager CLI のインストール
Red Hat Edge Manager CLI をインストールするには、以下の手順を実行します。
手順
- 以下のコマンドを実行して、お使いのシステムに適したリポジトリーのサブスクリプションマネージャーを有効にします。 - sudo subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms - sudo subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Red Hat Edge Manager で利用可能なリポジトリーの完全なリストは、関連情報 セクションを参照してください。 
- 次のコマンドを実行して、パッケージマネージャーを使用して - flightctlCLI をインストールします。- sudo dnf install flightctl - sudo dnf install flightctl- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
					OAuth アプリケーションを手動でセットアップ する場合は、たとえば xdg-utils をインストールするなどして、xdg-open、x-www-browser、または www-browser のいずれかのユーティリティーを利用できるようにする必要があります。
				
4.3.3. CLI での Red Hat Edge Manager へのログイン
Red Hat Edge Manager にログインする方法は、アプリケーションを最初にセットアップするときに 自動 方式を選択したか、手動 方式を選択したかによって異なります。
手順
- 自動セットアップを使用した場合は、読み取りスコープだけでも、Personal Access Token を作成し (Ansible Automation Platform UI の右上隅のプロファイルアイコンの下 > User details > Tokens タブ)、このトークンを使用して CLI から直接ログインすることができます。次の構文例を参照してください。 - flightctl login https://<your-edge-manager-ip-or-domain>:3443 --token=<your-aap-oauth-token> --insecure-skip-tls-verify - flightctl login https://<your-edge-manager-ip-or-domain>:3443 --token=<your-aap-oauth-token> --insecure-skip-tls-verify- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 手動セットアップを使用した場合は、次の構文例を使用して、Client ID を使用して Web ベースのプロセスでログインします。 - flightctl login https://<your-edge-manager-ip-or-domain>:3443 --web --client-id=<your-aap-client-id> --insecure-skip-tls-verify - flightctl login https://<your-edge-manager-ip-or-domain>:3443 --web --client-id=<your-aap-client-id> --insecure-skip-tls-verify- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Web ブラウザーが開き、承認を求められます。 - --insecure-skip-tls-verifyパラメーターは、独自の有効な証明書を生成していない場合にのみ使用します。
 
次のステップ
CLI の使用に役立つ次のコマンドを使用します。
- 利用可能なコマンドのリストを出力するには、次のコマンドを使用します。 - flightctl - flightctl- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- flightctl CLI のバージョンとバックエンドの Red Hat Edge Manager バージョンの両方を出力するには、次のコマンドを使用します。 - flightctl version - flightctl version- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
サポートを受けるには、また適切な機能性を確保するには、flightctl CLI のバージョンが、使用中の Red Hat Edge Manager のバージョンと一致している必要があります。一致していないバージョンはサポートされません。
4.3.4. オプション: 早期バインディングの登録証明書の要求
イメージにエージェント設定を含める場合は、次の手順を実行します。
手順
- CLI での Red Hat Edge Manager へのログイン の手順に従って、flightctl CLI にログインします。 注記- CLI は、ホストの認証局プールを使用して、Red Hat Edge Manager サービスのアイデンティティーを検証します。プールに認証局証明書を追加しない場合に、自己署名証明書を使用すると、検証で TLS 検証エラーが発生する可能性があります。コマンドに - --insecure-skip-tls-verifyフラグを追加することで、サーバーの検証を省略できます。
- 次のコマンドを実行して、エージェント設定ファイルの形式で登録認証情報を取得します。 - flightctl certificate request --signer=enrollment --expiration=365d --output=embedded > config.yaml - flightctl certificate request --signer=enrollment --expiration=365d --output=embedded > config.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- 
										--expiration=365dオプションは、認証情報が 1 年間有効であることを指定します。
- 
										--output=embeddedオプションは、登録認証情報が埋め込まれたエージェント設定ファイルに出力することを指定します。
 - 返される - config.yamlには、Red Hat Edge Manager サービスの URL、認証局バンドル、エージェントの登録クライアント証明書と鍵が含まれます。以下の例を参照してください。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
										
4.3.5. オプション: イメージプルシークレットの使用
デバイスがプライベートリポジトリーのコンテナーに依存している場合は、レジストリーのプルシークレットを設定する必要があります。以下の手順を実行します。
手順
- 使用するコンテナーイメージの種類に応じて、デバイスの次のシステムパスのいずれかまたは両方にプルシークレットを配置します。 - 
									オペレーティングシステムイメージは、パス /etc/ostree/auth.jsonを使用します。
- アプリケーションコンテナーイメージは、パス - /root/.config/containers/auth.jsonを使用します。重要- プルシークレットを使用するには、その前にデバイス上にプルシークレットが存在している必要があります。 
 
- 
									オペレーティングシステムイメージは、パス 
- プルシークレットが次の形式を使用していることを確認します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
詳細は、関連情報 セクションを参照してください。
4.3.6. bootc を使用したオペレーティングシステムイメージのビルド
					Red Hat Edge Manager エージェントを含む bootc を使用してオペレーティングシステムイメージをビルドします。必要に応じて、オペレーティングシステムイメージに次の項目を含めることができます。
				
- 早期バインディングのエージェント設定
- 任意のドライバー
- ホストの設定
- 必要なアプリケーションワークロード
以下の手順を実行します。
手順
- Red Hat Edge Manager エージェントと設定を含む RHEL 9 ベースのオペレーティングシステムイメージをビルドするには、次の内容を含む - Containerfileファイルを作成します。- FROM registry.redhat.io/rhel9/rhel-bootc:<required_os_version> RUN dnf --enablerepo ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms -y install flightctl-agent-0.7.2-1.el9fc && \ dnf -y clean all && \ systemctl enable flightctl-agent.service && \ systemctl mask bootc-fetch-apply-updates.timer- FROM registry.redhat.io/rhel9/rhel-bootc:<required_os_version>- 1 - RUN dnf --enablerepo ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms -y install flightctl-agent-0.7.2-1.el9fc && \ dnf -y clean all && \ systemctl enable flightctl-agent.service && \ systemctl mask bootc-fetch-apply-updates.timer- 2 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 重要- デバイスがプライベートリポジトリーのコンテナーに依存している場合は、デバイスのプルシークレットをパス - /etc/ostree/auth.jsonに配置する必要があります。プルシークレットを使用するには、その前にデバイス上にプルシークレットが存在している必要があります。- オプション: - podman-composeアプリケーションのサポートを有効にするには、- Containerfileファイルに次のセクションを追加します。- RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ dnf -y install podman-compose && \ dnf -y clean all && \ systemctl enable podman.service- RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ dnf -y install podman-compose && \ dnf -y clean all && \ systemctl enable podman.service- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- オプション: 早期バインディング用に - config.yamlを作成した場合は、- Containerfileに次のセクションを追加します。- ADD config.yaml /etc/flightctl/ - ADD config.yaml /etc/flightctl/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 - 詳細は、オプション: 早期バインディングの登録証明書の要求 を参照してください。 
- 次のコマンドを実行して、Open Container Initiative (OCI) レジストリーを定義します。 - OCI_REGISTRY=registry.redhat.io - OCI_REGISTRY=registry.redhat.io- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、書き込み権限を持つイメージリポジトリーを定義します。 - OCI_IMAGE_REPO=${OCI_REGISTRY}/<your_org>/<your_image>- OCI_IMAGE_REPO=${OCI_REGISTRY}/<your_org>/<your_image>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、イメージタグを定義します。 - OCI_IMAGE_TAG=v1 - OCI_IMAGE_TAG=v1- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ターゲットプラットフォームのオペレーティングシステムイメージをビルドします。 - sudo podman build -t ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG} .- sudo podman build -t ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG} .- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.3.7. Sigstore を使用した bootc オペレーティングシステムイメージの署名および公開
					Sigstore を使用して bootc オペレーティングシステムイメージに署名するには、次の手順を実行します。
				
手順
- signingkey.pubと- signingkey.privateという名前の Sigstore 鍵ペアを生成します。- skopeo generate-sigstore-key --output-prefix signingkey - skopeo generate-sigstore-key --output-prefix signingkey- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Podman や Skopeo などのコンテナーツールを設定して、署名済みイメージとともに Sigstore 署名を OCI レジストリーにアップロードします。 - sudo tee "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" > /dev/null <<EOF docker: ${OCI_REGISTRY}: use-sigstore-attachments: true EOF- sudo tee "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" > /dev/null <<EOF docker: ${OCI_REGISTRY}: use-sigstore-attachments: true EOF- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、OCI レジストリーにログインします。 - sudo podman login ${OCI_REGISTRY}- sudo podman login ${OCI_REGISTRY}- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、オペレーティングシステムイメージに署名し、公開します。 - sudo podman push \ --sign-by-sigstore-private-key ./signingkey.private \ ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}- sudo podman push \ --sign-by-sigstore-private-key ./signingkey.private \ ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.3.8. オペレーティングシステムディスクイメージのビルド
デバイスのファイルシステムを含むオペレーティングシステムディスクイメージをビルドします。
以下の手順を実行します。
手順
- 次のコマンドを実行して、 - outputというディレクトリーを作成します。- mkdir -p output - mkdir -p output- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、 - bootc-image-builderを使用して、オペレーティングシステムイメージから- isoタイプのオペレーティングシステムディスクイメージを生成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
					bootc-image-builder の実行が完了すると、ISO ディスクイメージがパス ${PWD}/output/bootiso/install.iso に保存されます。
				
4.3.9. オプション: オペレーティングシステムディスクイメージの署名と Open Container Initiative レジストリーへの公開
					ディスクイメージに署名して Open Container Initiative (OCI) レジストリーに公開します。必要に応じて、ディスクイメージを OCI アーティファクトとして圧縮し、bootc イメージと同じ OCI レジストリーに公開することができます。これにより、bootc とディスクイメージの一元的なホスティングと配布が容易になります。ISO ディスクイメージを、bootc イメージの名前に /diskimage-iso を付加した名前を持つリポジトリーに公開するには、次の手順を実行します。
				
前提条件
- Sigstore を使用して秘密鍵を作成した。Sigstore を使用した bootc オペレーティングシステムイメージの署名および公開 参照してください。
次の手順を実行して、ディスクイメージに署名し、OCI レジストリーに公開します。
手順
- 次のコマンドを実行して、ISO ディスクイメージが配置されているディレクトリーの所有者を - rootから現在のユーザーに変更します。- sudo chown -R $(whoami):$(whoami) "${PWD}/output"- sudo chown -R $(whoami):$(whoami) "${PWD}/output"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、 - OCI_DISK_IMAGE_REPO環境変数を、- bootcイメージと同じリポジトリーに- /diskimage-isoを付加した値に設定します。- OCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-iso- OCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-iso- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行してマニフェストリストを作成します。 - sudo podman manifest create \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}- sudo podman manifest create \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、ISO ディスクイメージを OCI アーティファクトとしてマニフェストリストに追加します。 - sudo podman manifest add \ --artifact --artifact-type application/vnd.diskimage.iso \ --arch=amd64 --os=linux \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} \ "${PWD}/output/bootiso/install.iso"- sudo podman manifest add \ --artifact --artifact-type application/vnd.diskimage.iso \ --arch=amd64 --os=linux \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} \ "${PWD}/output/bootiso/install.iso"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、Sigstore 秘密鍵を使用してマニフェストリストに署名し、イメージをレジストリーにプッシュします。 - sudo podman manifest push --all \ --sign-by-sigstore-private-key ./signingkey.private \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} \ docker://${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}- sudo podman manifest push --all \ --sign-by-sigstore-private-key ./signingkey.private \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} \ docker://${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.3.10. 関連情報
- 異なるターゲットプラットフォームでのオペレーティングシステムイメージのビルドの詳細は、コンテナープルシークレットの設定 を参照してください。
4.3.11. 特定のターゲットプラットフォームの要件
以下のプラットフォームに関する考慮事項を参照してください。
4.3.11.1. Red Hat OpenShift Virtualization のイメージのビルド
Red Hat OpenShift Virtualization 用のオペレーティングシステムイメージとディスクイメージをビルドする際には、一般的なイメージビルドプロセスを使用できます。ただし、以下の変更を加えてください。
- 
								仮想デバイスをプロビジョニングするときに、cloud-initを介して登録証明書またはエージェント設定を注入することにより、遅延バインディングを使用します。
- 
								イメージに open-vm-toolsゲストツールを追加します。
- 
								isoではなくqcow2タイプのディスクイメージをビルドします。
以下のステップに変更を加えて、一般的な手順を実行してください。
手順
- Red Hat Edge Manager エージェントと仮想マシンゲストツールを含み、エージェント設定を除外した、RHEL 9 に基づくオペレーティングシステムイメージをビルドします。
- 次の内容を含む - Containerfileという名前のファイルを作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- オプション: - podman-composeアプリケーションのサポートを有効にするには、- Containerfileファイルに次のセクションを追加します。- RUN dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ dnf -y install podman-compose && \ dnf -y clean all && \ systemctl enable podman.service- RUN dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ dnf -y install podman-compose && \ dnf -y clean all && \ systemctl enable podman.service- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.3.11.2. bootc イメージのビルド
						一般的なイメージビルドプロセスに従って、bootc オペレーティングシステムイメージをビルド、署名、公開します。
					
手順
- 次のコマンドを実行して、 - outputというディレクトリーを作成します。- mkdir -p output - mkdir -p output- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、オペレーティングシステムイメージから - vmdkタイプのオペレーティングシステムディスクイメージを生成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
						bootc-image-builder の実行が完了すると、${PWD}/output/vmdk/disk.vmdk にディスクイメージが保存されます。
					
4.3.11.3. QCoW2 ディスクイメージのビルド
Red Hat OpenShift Virtualization は、OCI レジストリーからディスクイメージをダウンロードできますが、OCI アーティファクトではなくコンテナーディスクイメージを想定しています。
QCoW2 ディスクイメージをビルド、署名、アップロードするには、以下の手順を実行します。
手順
- 次の内容を含む - Containerfile.qcow2という名前のファイルを作成します。- FROM registry.access.redhat.com/ubi9/ubi:latest AS builder ADD --chown=107:107 output/qcow2/disk.qcow2 /disk/ RUN chmod 0440 /disk/* FROM scratch COPY --from=builder /disk/* /disk/ - FROM registry.access.redhat.com/ubi9/ubi:latest AS builder ADD --chown=107:107 output/qcow2/disk.qcow2 /disk/- 1 - RUN chmod 0440 /disk/*- 2 - FROM scratch COPY --from=builder /disk/* /disk/- 3 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、ディスクイメージをビルド、署名、公開します。 - sudo chown -R $(whoami):$(whoami) "${PWD}/output" OCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-qcow2 sudo podman build -t ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} -f Containerfile.qcow2 . sudo podman push --sign-by-sigstore-private-key ./signingkey.private ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}- sudo chown -R $(whoami):$(whoami) "${PWD}/output" OCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-qcow2 sudo podman build -t ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} -f Containerfile.qcow2 . sudo podman push --sign-by-sigstore-private-key ./signingkey.private ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.3.11.4. VMware vSphere のイメージのビルド
VMware vSphere 用のオペレーティングシステムイメージとディスクイメージをビルドする際には、一般的なイメージビルドプロセスを使用できます。ただし、以下の変更を加えてください。
- 
								仮想デバイスをプロビジョニングするときに、cloud-initを介して登録証明書またはエージェント設定を注入することにより、遅延バインディングを使用します。
- 
								イメージに open-vm-toolsゲストツールを追加します。
- 
								isoではなくvmdkタイプのディスクイメージをビルドします。
以下のステップに変更を加えて、一般的な手順を実行してください。
手順
- Red Hat Edge Manager エージェントと仮想マシンゲストツールを含み、エージェント設定を除外した、RHEL 9 に基づくオペレーティングシステムイメージをビルドします。
- 次の内容を含む - Containerfileという名前のファイルを作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、 - outputというディレクトリーを作成します。- mkdir -p output - mkdir -p output- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、オペレーティングシステムイメージから - vmdkタイプのオペレーティングシステムディスクイメージを生成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
						bootc-image-builder の実行が完了すると、${PWD}/output/vmdk/disk.vmdk にディスクイメージが保存されます。