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 で利用可能なリポジトリーの完全なリストは、関連情報 セクションを参照してください。
次のコマンドを実行して、パッケージマネージャーを使用して
flightctl
CLI をインストールします。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
にディスクイメージが保存されます。