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

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

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

    sudo dnf install flightctl

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
  • 手動セットアップを使用した場合は、次の構文例を使用して、Client ID を使用して Web ベースのプロセスでログインします。

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

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

次のステップ

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

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

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

    flightctl version
重要

サポートを受けるには、また適切な機能性を確保するには、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
    注記
    • --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

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

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

手順

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

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

      重要

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

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

    {
      "auths": {
        "registry.example.com": {
          "auth": "base64-encoded-credentials"
        }
      }
    }

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

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
    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
    • オプション: 早期バインディング用に config.yaml を作成した場合は、Containerfile に次のセクションを追加します。

      ADD config.yaml /etc/flightctl/

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

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

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

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

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

    sudo podman build -t ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG} .

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

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

手順

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

    skopeo generate-sigstore-key --output-prefix signingkey
  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
  3. 次のコマンドを実行して、OCI レジストリーにログインします。

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

    sudo podman push \
        --sign-by-sigstore-private-key ./signingkey.private \
        ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}

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

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

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

手順

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

    mkdir -p output
  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}

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"
  2. 次のコマンドを実行して、OCI_DISK_IMAGE_REPO 環境変数を、bootc イメージと同じリポジトリーに /diskimage-iso を付加した値に設定します。

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

    sudo podman manifest create \
        ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}
  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"
  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}

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
  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

4.3.11.2. bootc イメージのビルド

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

手順

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

    mkdir -p output
  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}

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
    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}

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
  3. 次のコマンドを実行して、output というディレクトリーを作成します。

    mkdir -p output
  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}

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

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る