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-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Edge Manager で利用可能なリポジトリーの完全なリストは、関連情報 セクションを参照してください。
次のコマンドを実行して、パッケージマネージャーを使用して
flightctlCLI をインストールします。sudo dnf install flightctl
sudo dnf install flightctlCopy 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-verifyCopy 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-verifyCopy to Clipboard Copied! Toggle word wrap Toggle overflow Web ブラウザーが開き、承認を求められます。
--insecure-skip-tls-verifyパラメーターは、独自の有効な証明書を生成していない場合にのみ使用します。
次のステップ
CLI の使用に役立つ次のコマンドを使用します。
利用可能なコマンドのリストを出力するには、次のコマンドを使用します。
flightctl
flightctlCopy to Clipboard Copied! Toggle word wrap Toggle overflow flightctl CLI のバージョンとバックエンドの Red Hat Edge Manager バージョンの両方を出力するには、次のコマンドを使用します。
flightctl version
flightctl versionCopy 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.yamlCopy 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.timerFROM 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.timer2 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.serviceRUN 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.serviceCopy 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.ioCopy 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=v1Copy 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 signingkeyCopy 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 EOFsudo tee "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" > /dev/null <<EOF docker: ${OCI_REGISTRY}: use-sigstore-attachments: true EOFCopy 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 outputCopy 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-isoOCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-isoCopy 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.serviceRUN 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.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.11.2. bootc イメージのビルド リンクのコピーリンクがクリップボードにコピーされました!
一般的なイメージビルドプロセスに従って、bootc オペレーティングシステムイメージをビルド、署名、公開します。
手順
次のコマンドを実行して、
outputというディレクトリーを作成します。mkdir -p output
mkdir -p outputCopy 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 outputCopy 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 にディスクイメージが保存されます。