1.3. Red Hat Edge Manager で使用するオペレーティングシステムイメージ


イメージベースのオペレーティングシステムでは、オペレーティングシステムとその設定やアプリケーションを単一のユニットとしてバージョン管理、デプロイ、および更新できます。

イメージベースのオペレーティングシステムを使用すると、以下を実行して運用上のリスクが軽減されます。

  • テスト済みの環境と多数のデバイスにデプロイされる環境との間の潜在的なドリフトを最小限に抑える。
  • トランザクションによる更新およびロールバックを通じて、コストのかかるメンテナンスまたは置き換えが必要となる更新の失敗によるリスクを最小限に抑える。

Red Hat Edge Manager は、起動可能なコンテナーイメージ (bootc) を実行するイメージベースの Linux オペレーティングシステムに焦点を当てています。詳細は、bootc を参照してください。

重要: bootc ツールは、パッケージベースのオペレーティングシステムを更新しません。

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

1.3.1. イメージのビルドプロセス

大まかに言うと、イメージのビルドプロセスは以下のように機能します。

  1. Fedora、CentOS、RHEL イメージなどのベース bootc オペレーティングシステムイメージを選択します。
  2. ベース bootc イメージに対して、以下の項目を重ねるコンテナーファイルを作成します。

    • Red Hat Edge Manager エージェントと設定。
    • オプション: ターゲットデプロイメント環境に固有のドライバー。
    • オプション: ホスト設定 (例: 認証局バンドル) およびすべてのデプロイメントに共通のアプリケーションワークロード。
  3. podman および skopeo を使用して、bootc オペレーティングシステムイメージをビルド、公開、および署名します。
  4. bootc-image-builder を使用してオペレーティングシステムディスクイメージを作成します。
  5. skopeo を使用して、オペレーティングシステムディスクイメージをビルド、公開、および署名します。

注記: オペレーティングシステムディスクイメージには、パーティション、ボリューム、ファイルシステム、および初期 bootc イメージが含まれます。オペレーティングシステムディスクイメージは、プロビジョニング中に 1 回だけ作成する必要があります。

後続のデバイス更新では、bootc オペレーティングシステムイメージのみが必要になります。これには、ファイルシステム内のファイルが含まれます。

1.3.2. 関連情報

1.3.3. イメージのビルドに関する特別な考慮事項

テクノロジープレビュー: 次のトピックでは、Red Hat Edge Manager のイメージを構築する際の特別な考慮事項を説明します。

1.3.3.1. 動的ランタイム設定よりもビルド時設定を優先する

ビルド時にオペレーティングシステムイメージに設定を追加します。ビルド時に設定を追加することで、設定が一緒にテスト、配布、および更新されるようになります。ビルド時の設定が実行不可能または望ましくない場合には、Red Hat Edge Manager を使用して、ランタイム時にデバイスを動的に設定できます。

次の場合は、動的ランタイム設定が推奨されます。

  • ホスト名やサイト固有のネットワーク認証情報など、デプロイメントまたはサイト固有の設定がある。
  • イメージと共に配布する場合は安全でないシークレットがある。
  • 再起動なしで追加、更新、削除が必要なアプリケーションワークロードがある、またはオペレーティングシステムよりも速い頻度で更新されるアプリケーションワークロードがある。

1.3.3.2. /usr ディレクトリーの設定

設定が静的で、アプリケーションやサービスがその設定をサポートする場合は、設定ファイルを /usr ディレクトリーに配置します。設定を /usr ディレクトリーに配置すると、設定は読み取り専用のままとなり、イメージによって完全に定義されます。

次の場合は、/usr ディレクトリーに設定を配置することは不可能または望ましくありません。

  • この設定はデプロイメントまたはサイト固有です。
  • アプリケーションまたはサービスは、/etc ディレクトリーからの設定の読み取りのみをサポートします。
  • 設定はランタイム時に変更する必要がある場合があります。

1.3.3.3. ドロップインディレクトリー

ドロップインディレクトリーを使用して、サービスが集約する設定ファイルを追加、置換、または削除します。ターゲット設定からの逸脱を引き起こす可能性のある設定ファイルを直接編集しないでください。

注記: ディレクトリー名の最後の .d/ でドロップインディレクトリーを特定できます。たとえば、/etc/containers/certs.d/etc/cron.d、および /etc/NetworkManager/conf.d などです。

1.3.3.4. スクリプトを使用したオペレーティングシステムイメージ

ファイルシステムを変更するスクリプトまたはコマンドを実行しないでください。bootc または Red Hat Edge Manager は、逸脱や整合性チェックの失敗を引き起こす可能性のある変更されたファイルを上書きできます。

代わりに、イメージのビルド中にこのようなスクリプトやコマンドを実行するため、変更はイメージの一部になります。あるいは、Red Hat Edge Manager の設定管理メカニズムを使用します。

1.3.3.5. 関連情報

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

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

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

1.3.4.1. 前提条件

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

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

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

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

    Copy to Clipboard Toggle word wrap
    subscription-manager repos --enable rhacm-2.13-for-rhel-<version>-<arch>-rpms

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

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

    Copy to Clipboard Toggle word wrap
    sudo dnf install flightctl-cli

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

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

  1. flightctl CLI を使用して Red Hat Edge Manager サービスで認証します。以下のコマンドを実行します。

    Copy to Clipboard Toggle word wrap
    flightctl login --username=<your_user> --password=<your_password> https://<rhem_api_server_url>

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

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

    Copy to Clipboard Toggle word wrap
    flightctl certificate request --signer=enrollment --expiration=365d --output=embedded > config.yaml

    注記:

    • この --expiration=365d オプションは、認証情報が 1 年間有効であることを指定します。
    • --output=embedded オプションは、出力が登録認証情報が埋め込まれたエージェント設定ファイルであることを指定します。

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

    Copy to Clipboard Toggle word wrap
    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

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

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

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

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

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

  2. プルシークレットが以下の形式であることを確認してください。

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

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

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

Red Hat Edge Manager エージェントを含む bootc でオペレーティングシステムイメージをビルドします。オプションで、次の項目をオペレーティングシステムイメージに追加できます。

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

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

  1. 以下の内容で Containerfile ファイルを作成して、Red Hat Edge Manager エージェントおよび設定を含む RHEL 9 ベースのオペレーティングシステムイメージをビルドします。

    Copy to Clipboard Toggle word wrap
    FROM registry.redhat.io/rhel9/rhel-bootc:<required_os_version> 
    1
    
    
    RUN subscription-manager repos --enable rhacm-2.13-for-rhel-9-$(uname -m)-rpms && \
        dnf -y install flightctl-agent && \
        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 パスに配置する必要があります。シークレットが消費される前に、プルシークレットがデバイスに存在している必要があります。

    1. オプション: podman-compose アプリケーションのサポートを有効にするには、以下のセクションを Containerfile ファイルに追加します。

      Copy to Clipboard Toggle word wrap
      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
    2. オプション: 初期バインディング用に config.yaml を作成した場合は、以下のセクションを Containerfile に追加します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Copy to Clipboard Toggle word wrap
    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 が完了すると、${PWD}/output/bootiso/install.iso パスで ISO ディスクイメージを見つけることができます。

1.3.4.8. オプション: オペレーティングシステムディスクイメージの署名と Open Container Initiative レジストリーへの公開

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

1.3.4.8.1. 前提条件
1.3.4.8.2. オプション: オペレーティングシステムディスクイメージの OCI レジストリーへの署名と公開

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

  1. ISO ディスクイメージが存在するディレクトリーの所有者を root からカレントユーザーに変更します。以下のコマンドを実行します。

    Copy to Clipboard Toggle word wrap
    sudo chown -R $(whoami):$(whoami) "${PWD}/output"
  2. /diskimage-iso が追加された bootc イメージと同じリポジトリーになるように OCI_DISK_IMAGE_REPO 環境変数を定義します。以下のコマンドを実行します。

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

    Copy to Clipboard Toggle word wrap
    sudo podman manifest create \
        ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}
  4. 次のコマンドを実行して、ISO ディスクイメージを OCI アーティファクトとしてマニフェストリストに追加します。

    Copy to Clipboard Toggle word wrap
    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 秘密鍵でマニフェストリストに署名し、イメージをレジストリーにプッシュします。以下のコマンドを実行します。

    Copy to Clipboard Toggle word wrap
    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}

1.3.4.9. 関連情報

1.3.4.10. 特定のターゲットプラットフォームの要件

イメージをビルドする際の次のプラットフォームの考慮事項を参照してください。

1.3.4.10.1. Red Hat OpenShift Virtualization のイメージビルド

VMware vSphere 用のオペレーティングシステムイメージとディスクイメージをビルドする場合は、以下の変更で汎用イメージビルドプロセスを実行できます。

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

以下の手順に変更を加えて、一般的な手順を実行します。

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

    Copy to Clipboard Toggle word wrap
    FROM registry.redhat.io/rhel9/bootc-image-builder:latest
    
    RUN subscription-manager repos --enable rhacm-2.13-for-rhel-9-$(uname -m)-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 ファイルに追加します。

    Copy to Clipboard Toggle word wrap
    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

汎用イメージビルドプロセスに従って、bootc オペレーティングシステムイメージをビルド、署名、および公開します。

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

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

    Copy to Clipboard Toggle word wrap
    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 パスで見つけることができます。

Red Hat OpenShift Virtualization は、OCI レジストリーからディスクイメージをダウンロードできますが、OCI アーティファクトではなくコンテナーディスクイメージを想定しています。QCoW2 ディスクイメージをビルド、署名、アップロードするには、以下の手順を実行します。

  1. 以下の内容で Containerfile.qcow2 という名前のファイルを作成します。

    Copy to Clipboard Toggle word wrap
    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. ディスクイメージをビルド、署名、公開します。以下のコマンドを実行します。

    Copy to Clipboard Toggle word wrap
    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}
1.3.4.10.2. VMware vSphere のイメージビルド

VMware vSphere 用のオペレーティングシステムイメージとディスクイメージをビルドする場合は、以下の変更で汎用イメージビルドプロセスを実行できます。

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

以下の手順に変更を加えて、一般的な手順を実行します。

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

    Copy to Clipboard Toggle word wrap
    FROM registry.redhat.io/rhel9/bootc-image-builder:latest
    
    RUN subscription-manager repos --enable rhacm-2.13-for-rhel-9-$(uname -m)-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 という名前のディレクトリーを作成します。

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

    Copy to Clipboard Toggle word wrap
    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

© 2025 Red Hat, Inc.