4.3. Red Hat Edge Manager の bootc オペレーティングシステムイメージのビルド


デバイスを Red Hat Edge Manager で管理できるように準備するには、Red Hat Edge Manager エージェントを含む bootc オペレーティングシステムイメージをビルドします。次に、デバイス用のオペレーティングシステムディスクイメージをビルドします。

詳細は、以下のセクションを参照してください。

4.3.1. 前提条件

bootc オペレーティングシステムイメージをビルドするには、次の前提条件を確認してください。

4.3.2. Red Hat Edge Manager CLI のインストール

Red Hat Edge Manager CLI をインストールするには、以下の手順を実行します。

手順

  1. 以下のコマンドを実行して、お使いのシステムに適したリポジトリーのサブスクリプションマネージャーを有効にします。

    sudo subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms
    Copy to Clipboard Toggle word wrap

    Red Hat Edge Manager で利用可能なリポジトリーの完全なリストは、関連情報 セクションを参照してください。

  2. 次のコマンドを実行して、パッケージマネージャーを使用して flightctl CLI をインストールします。

    sudo dnf install flightctl
    Copy to Clipboard Toggle word wrap

OAuth アプリケーションを手動でセットアップ する場合は、たとえば xdg-utils をインストールするなどして、xdg-openx-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
    Copy to Clipboard Toggle word wrap
  • 手動セットアップを使用した場合は、次の構文例を使用して、Client ID を使用して Web ベースのプロセスでログインします。

    flightctl login https://<your-edge-manager-ip-or-domain>:3443 --web --client-id=<your-aap-client-id> --insecure-skip-tls-verify
    Copy to Clipboard Toggle word wrap
    • Web ブラウザーが開き、承認を求められます。

      --insecure-skip-tls-verify パラメーターは、独自の有効な証明書を生成していない場合にのみ使用します。

次のステップ

CLI の使用に役立つ次のコマンドを使用します。

  • 利用可能なコマンドのリストを出力するには、次のコマンドを使用します。

    flightctl
    Copy to Clipboard Toggle word wrap
  • flightctl CLI のバージョンとバックエンドの Red Hat Edge Manager バージョンの両方を出力するには、次のコマンドを使用します。

    flightctl version
    Copy to Clipboard Toggle word wrap
重要

サポートを受けるには、また適切な機能性を確保するには、flightctl CLI のバージョンが、使用中の Red Hat Edge Manager のバージョンと一致している必要があります。一致していないバージョンはサポートされません。

4.3.4. オプション: 早期バインディングの登録証明書の要求

イメージにエージェント設定を含める場合は、次の手順を実行します。

手順

  1. CLI での Red Hat Edge Manager へのログイン の手順に従って、flightctl CLI にログインします。

    注記

    CLI は、ホストの認証局プールを使用して、Red Hat Edge Manager サービスのアイデンティティーを検証します。プールに認証局証明書を追加しない場合に、自己署名証明書を使用すると、検証で TLS 検証エラーが発生する可能性があります。コマンドに --insecure-skip-tls-verify フラグを追加することで、サーバーの検証を省略できます。

  2. 次のコマンドを実行して、エージェント設定ファイルの形式で登録認証情報を取得します。

    flightctl certificate request --signer=enrollment --expiration=365d --output=embedded > config.yaml
    Copy to Clipboard Toggle word wrap
    注記
    • --expiration=365d オプションは、認証情報が 1 年間有効であることを指定します。
    • --output=embedded オプションは、登録認証情報が埋め込まれたエージェント設定ファイルに出力することを指定します。

    返される config.yaml には、Red Hat Edge Manager サービスの URL、認証局バンドル、エージェントの登録クライアント証明書と鍵が含まれます。以下の例を参照してください。

    enrollment-service:
      authentication:
        client-certificate-data: LS0tLS1CRUdJTiBD...
        client-key-data: LS0tLS1CRUdJTiBF...
      service:
        certificate-authority-data: LS0tLS1CRUdJTiBD...
        server: https://agent-api.flightctl.127.0.0.1.nip.io:7443
      enrollment-ui-endpoint: https://ui.flightctl.127.0.0.1.nip.io:8081
    Copy to Clipboard Toggle word wrap

4.3.5. オプション: イメージプルシークレットの使用

デバイスがプライベートリポジトリーのコンテナーに依存している場合は、レジストリーのプルシークレットを設定する必要があります。以下の手順を実行します。

手順

  1. 使用するコンテナーイメージの種類に応じて、デバイスの次のシステムパスのいずれかまたは両方にプルシークレットを配置します。

    • オペレーティングシステムイメージは、パス /etc/ostree/auth.json を使用します。
    • アプリケーションコンテナーイメージは、パス /root/.config/containers/auth.json を使用します。

      重要

      プルシークレットを使用するには、その前にデバイス上にプルシークレットが存在している必要があります。

  2. プルシークレットが次の形式を使用していることを確認します。

    {
      "auths": {
        "registry.example.com": {
          "auth": "base64-encoded-credentials"
        }
      }
    }
    Copy to Clipboard Toggle word wrap

詳細は、関連情報 セクションを参照してください。

4.3.6. bootc を使用したオペレーティングシステムイメージのビルド

Red Hat Edge Manager エージェントを含む bootc を使用してオペレーティングシステムイメージをビルドします。必要に応じて、オペレーティングシステムイメージに次の項目を含めることができます。

  • 早期バインディングのエージェント設定
  • 任意のドライバー
  • ホストの設定
  • 必要なアプリケーションワークロード

以下の手順を実行します。

手順

  1. Red Hat Edge Manager エージェントと設定を含む RHEL 9 ベースのオペレーティングシステムイメージをビルドするには、次の内容を含む Containerfile ファイルを作成します。

    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 Toggle word wrap
    1
    FROM で参照されるベースイメージは、すでに Linux カーネルが含まれているブート可能なコンテナー (bootc) イメージです。これにより、既存の標準的なコンテナービルドツールとワークフローを再利用できます。
    2
    デフォルトの自動更新を無効にします。更新は Red Hat Edge Manager によって管理されます。
    重要

    デバイスがプライベートリポジトリーのコンテナーに依存している場合は、デバイスのプルシークレットをパス /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
      Copy to Clipboard Toggle word wrap
    • オプション: 早期バインディング用に config.yaml を作成した場合は、Containerfile に次のセクションを追加します。

      ADD config.yaml /etc/flightctl/
      Copy to Clipboard Toggle word wrap

    詳細は、オプション: 早期バインディングの登録証明書の要求 を参照してください。

  2. 次のコマンドを実行して、Open Container Initiative (OCI) レジストリーを定義します。

    OCI_REGISTRY=registry.redhat.io
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、書き込み権限を持つイメージリポジトリーを定義します。

    OCI_IMAGE_REPO=${OCI_REGISTRY}/<your_org>/<your_image>
    Copy to Clipboard Toggle word wrap
  4. 次のコマンドを実行して、イメージタグを定義します。

    OCI_IMAGE_TAG=v1
    Copy to Clipboard Toggle word wrap
  5. ターゲットプラットフォームのオペレーティングシステムイメージをビルドします。

    sudo podman build -t ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG} .
    Copy to Clipboard Toggle word wrap

4.3.7. Sigstore を使用した bootc オペレーティングシステムイメージの署名および公開

Sigstore を使用して bootc オペレーティングシステムイメージに署名するには、次の手順を実行します。

手順

  1. signingkey.pubsigningkey.private という名前の Sigstore 鍵ペアを生成します。

    skopeo generate-sigstore-key --output-prefix signingkey
    Copy to Clipboard Toggle word wrap
  2. Podman や Skopeo などのコンテナーツールを設定して、署名済みイメージとともに Sigstore 署名を OCI レジストリーにアップロードします。

    sudo tee "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" > /dev/null <<EOF
    docker:
        ${OCI_REGISTRY}:
            use-sigstore-attachments: true
    EOF
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、OCI レジストリーにログインします。

    sudo podman login ${OCI_REGISTRY}
    Copy to Clipboard Toggle word wrap
  4. 次のコマンドを実行して、オペレーティングシステムイメージに署名し、公開します。

    sudo podman push \
        --sign-by-sigstore-private-key ./signingkey.private \
        ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}
    Copy to Clipboard Toggle word wrap

4.3.8. オペレーティングシステムディスクイメージのビルド

デバイスのファイルシステムを含むオペレーティングシステムディスクイメージをビルドします。

以下の手順を実行します。

手順

  1. 次のコマンドを実行して、output というディレクトリーを作成します。

    mkdir -p output
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、bootc-image-builder を使用して、オペレーティングシステムイメージから iso タイプのオペレーティングシステムディスクイメージを生成します。

    sudo podman run --rm -it --privileged --pull=newer \
        --security-opt label=type:unconfined_t \
        -v "${PWD}/output":/output \
        -v /var/lib/containers/storage:/var/lib/containers/storage \
        registry.redhat.io/rhel9/bootc-image-builder:latest \
        --type iso \
        ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}
    Copy to Clipboard Toggle word wrap

bootc-image-builder の実行が完了すると、ISO ディスクイメージがパス ${PWD}/output/bootiso/install.iso に保存されます。

ディスクイメージに署名して Open Container Initiative (OCI) レジストリーに公開します。必要に応じて、ディスクイメージを OCI アーティファクトとして圧縮し、bootc イメージと同じ OCI レジストリーに公開することができます。これにより、bootc とディスクイメージの一元的なホスティングと配布が容易になります。ISO ディスクイメージを、bootc イメージの名前に /diskimage-iso を付加した名前を持つリポジトリーに公開するには、次の手順を実行します。

前提条件

次の手順を実行して、ディスクイメージに署名し、OCI レジストリーに公開します。

手順

  1. 次のコマンドを実行して、ISO ディスクイメージが配置されているディレクトリーの所有者を root から現在のユーザーに変更します。

    sudo chown -R $(whoami):$(whoami) "${PWD}/output"
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、OCI_DISK_IMAGE_REPO 環境変数を、bootc イメージと同じリポジトリーに /diskimage-iso を付加した値に設定します。

    OCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-iso
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行してマニフェストリストを作成します。

    sudo podman manifest create \
        ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}
    Copy to Clipboard Toggle word wrap
  4. 次のコマンドを実行して、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"
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行して、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}
    Copy to Clipboard Toggle word wrap

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 タイプのディスクイメージをビルドします。

以下のステップに変更を加えて、一般的な手順を実行してください。

手順

  1. Red Hat Edge Manager エージェントと仮想マシンゲストツールを含み、エージェント設定を除外した、RHEL 9 に基づくオペレーティングシステムイメージをビルドします。
  2. 次の内容を含む Containerfile という名前のファイルを作成します。

    FROM registry.redhat.io/rhel9/bootc-image-builder:latest
    RUN subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms
        dnf -y install flightctl-agent && \
        dnf -y clean all && \
        systemctl enable flightctl-agent.service
    RUN dnf -y install cloud-init open-vm-tools && \
        dnf -y clean all && \
        ln -s ../cloud-init.target /usr/lib/systemd/system/default.target.wants && \
        systemctl enable vmtoolsd.service
    Copy to Clipboard Toggle word wrap
  3. オプション: 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
    Copy to Clipboard Toggle word wrap

4.3.11.2. bootc イメージのビルド

一般的なイメージビルドプロセスに従って、bootc オペレーティングシステムイメージをビルド、署名、公開します。

手順

  1. 次のコマンドを実行して、output というディレクトリーを作成します。

    mkdir -p output
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、オペレーティングシステムイメージから vmdk タイプのオペレーティングシステムディスクイメージを生成します。

    sudo podman run --rm -it --privileged --pull=newer \
        --security-opt label=type:unconfined_t \
        -v "${PWD}/output":/output \
        -v /var/lib/containers/storage:/var/lib/containers/storage \
        registry.redhat.io/rhel9/bootc-image-builder:latest \
        --type qcow2 \
        ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}
    Copy to Clipboard Toggle word wrap

bootc-image-builder の実行が完了すると、${PWD}/output/vmdk/disk.vmdk にディスクイメージが保存されます。

4.3.11.3. QCoW2 ディスクイメージのビルド

Red Hat OpenShift Virtualization は、OCI レジストリーからディスクイメージをダウンロードできますが、OCI アーティファクトではなくコンテナーディスクイメージを想定しています。

QCoW2 ディスクイメージをビルド、署名、アップロードするには、以下の手順を実行します。

手順

  1. 次の内容を含む Containerfile.qcow2 という名前のファイルを作成します。

    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 Toggle word wrap
    1
    QCoW2 ディスクイメージをビルダーコンテナーに追加して、必要なファイル所有権 107 (QEMU ユーザー) を設定します。
    2
    必要なファイル権限 0440 を設定します。
    3
    ファイルをスクラッチイメージにコピーします。
  2. 次のコマンドを実行して、ディスクイメージをビルド、署名、公開します。

    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 Toggle word wrap

4.3.11.4. VMware vSphere のイメージのビルド

VMware vSphere 用のオペレーティングシステムイメージとディスクイメージをビルドする際には、一般的なイメージビルドプロセスを使用できます。ただし、以下の変更を加えてください。

  • 仮想デバイスをプロビジョニングするときに、cloud-init を介して登録証明書またはエージェント設定を注入することにより、遅延バインディングを使用します。
  • イメージに open-vm-tools ゲストツールを追加します。
  • iso ではなく vmdk タイプのディスクイメージをビルドします。

以下のステップに変更を加えて、一般的な手順を実行してください。

手順

  1. Red Hat Edge Manager エージェントと仮想マシンゲストツールを含み、エージェント設定を除外した、RHEL 9 に基づくオペレーティングシステムイメージをビルドします。
  2. 次の内容を含む Containerfile という名前のファイルを作成します。

    FROM registry.redhat.io/rhel9/bootc-image-builder:latest
    RUN subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms
        dnf -y install flightctl-agent && \
        dnf -y clean all && \
        systemctl enable flightctl-agent.service && \
    RUN dnf -y install cloud-init open-vm-tools && \
        dnf -y clean all && \
        ln -s ../cloud-init.target /usr/lib/systemd/system/default.target.wants && \
        systemctl enable vmtoolsd.service
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、output というディレクトリーを作成します。

    mkdir -p output
    Copy to Clipboard Toggle word wrap
  4. 次のコマンドを実行して、オペレーティングシステムイメージから vmdk タイプのオペレーティングシステムディスクイメージを生成します。

    sudo podman run --rm -it --privileged --pull=newer \
        --security-opt label=type:unconfined_t \
        -v "${PWD}/output":/output \
        -v /var/lib/containers/storage:/var/lib/containers/storage \
        registry.redhat.io/rhel9/bootc-image-builder:latest \
        --type vmdk \
        ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}
    Copy to Clipboard Toggle word wrap

bootc-image-builder の実行が完了すると、${PWD}/output/vmdk/disk.vmdk にディスクイメージが保存されます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat