第5章 Image Builder コマンドラインを使用した RHEL for Edge イメージの作成

Image Builder を使用して、カスタマイズした RHEL for Edge イメージ (OSTree コミット) を作成できます。

Image Builder にアクセスし、カスタマイズした RHEL for Edge イメージを作成するには、RHEL Web コンソールインターフェイスまたはコマンドラインインターフェイスを使用します。

ネットワークベースのデプロイメントの場合、CLI を使用して RHEL for Edge イメージを作成するワークフローでは、以下の概要手順を実施します。

  1. RHEL for Edge イメージのブループリントの作成
  2. RHEL for Edge Commit イメージの作成
  3. RHEL for Edge Commit イメージのダウンロード

ネットワークベース以外のデプロイメントの場合、CLI を使用して RHEL for Edge イメージを作成するワークフローでは、以下の概要手順を実施します。

  1. RHEL for Edge イメージのブループリントの作成
  2. RHEL for Edge インストーラーイメージのブループリントの作成
  3. RHEL for Edge Container イメージの作成
  4. RHEL for Edge Installer イメージを作成する
  5. RHEL for Edge イメージをダウンロードする

手順を実行するには、composer-cli パッケージを使用します。

注記

composer-cli コマンドを root 以外のユーザーとして実行するには、weldr グループの一員であるか、システムへの管理者アクセス権を持っている必要があります。

5.1. ネットワークベースのデプロイメントワークフロー

ここでは、OSTree コミットを構築する手順を説明します。これらの OSTree コミットには完全なオペレーティングシステムが含まれていますが、直接起動することはできません。それらを起動するには、キックスタートファイルを使用してデプロイメントする必要があります。

5.1.1. Image Builder コマンドラインインターフェイスを使用した RHEL for Edge Commit イメージのブループリントの作成

CLI を使用して、RHEL for Edge Commit イメージのブループリントを作成します。

前提条件

  • 既存のブループリントがありません。それを確認するには、既存のブループリントをリスト表示します。

    $ sudo composer-cli blueprints list

手順

  1. 次の内容のプレーンテキストファイルを TOML 形式で作成します。

    name = "blueprint-name"
    description = "blueprint-text-description"
    version = "0.0.1"
    modules = [ ]
    groups = [ ]

    詳細は以下のようになります。

    • blueprint-name はブループリントの名前、blueprint-text-description はブループリントの説明です。
    • 0.0.1 は、Semantic Versioning スキームに従って、バージョン番号に置き換えます。
    • モジュール には、イメージにインストールするパッケージの名前と、それに対応するバージョンの glob を記述します (例: パッケージ名 = "tmux"、対応するバージョンの glob = "2.9a")。

      現在、パッケージとモジュールには違いがないことに注意してください。

    • グループ は、イメージにインストールされるパッケージグループです (例: グループパッケージ anaconda-tools)。

      このとき、モジュールおよびグループがわからない場合は、空欄のままにしておきます。

  2. 要件に沿うように、必要なパッケージを含め、ブループリントの他の詳細をカスタマイズします。

    ブループリントに含むすべてのパッケージについて、以下の行をファイルに追加します。

    [[packages]]
    name = "package-name"
    version = "package-version"

    詳細は以下のようになります。

    • package-name は、パッケージ名に置き換えます (例: httpd, gdb-doc、coreutils など)。
    • package-version は、使用するパッケージのバージョン番号に置き換えます。

      package-version は、以下の dnf バージョン仕様をサポートしています。

    • 特定のバージョンを指定する場合は、バージョン番号を正確に指定してください (例: 9.0 など)。
    • 利用可能な最新バージョンを指定する場合は、アスタリスク * を使用します。
    • 最新のマイナーバージョンを指定する場合は、9.* などの形式を使用してください。
  3. ブループリントを RHEL Image Builder サーバーにプッシュ (インポート) します。

    # composer-cli blueprints push blueprint-name.toml
  4. 既存のブループリントを一覧表示して、作成したブループリントが正常にプッシュされて存在するかどうかを確認します。

    # composer-cli blueprints show BLUEPRINT-NAME
  5. ブループリントに記載されているコンポーネントおよびバージョンと、その依存関係が有効かどうかを確認します。

    # composer-cli blueprints depsolve blueprint-name

5.1.2. Image Builder コマンドラインインターフェイスを使用した RHEL for Edge Commit イメージの作成

RHEL Image Builder コマンドラインインターフェイスを使用して RHEL for Edge Commit イメージを作成するには、以下の前提条件を満たしていることを確認してから、手順に従ってください。

前提条件

  • RHEL for Edge Commit イメージのブループリントを作成している。

手順

  1. RHEL for Edge Commit イメージを作成します。

    # composer-cli compose start blueprint-name image-type

    詳細は以下のようになります。

    • blueprint-name は RHEL for Edge のブループリント名です。
    • image-typenetwork-based deploymentedge-commit です。

      composer プロセスがキューに追加されたことを確認する画面が表示されます。また、作成されたイメージの UUID (Universally Unique Identifier) 番号も表示されます。UUID 番号を使用してビルドを追跡します。また、更なるタスクのために UUID 番号を手元に保管しておきます。

  2. イメージの作成状態を確認します。

    # composer-cli compose status

    出力には、以下の形式で状態が表示されます。

    <UUID> RUNNING date blueprint-name blueprint-version image-type
    注記

    イメージの作成プロセスは、完了するまでに最大 20 分かかります。

    イメージ作成プロセスを中断するには、以下を実行します。

    # composer-cli compose cancel <UUID>

    既存イメージを削除するには、以下を実行します。

    # composer-cli compose delete <UUID>

    イメージの準備ができたら、イメージをダウンロードして ネットワークデプロイメント で使用できます。

5.1.3. RHEL Image Builder CLI を使用した ref commit による RHEL for Edge イメージ更新の作成

既存のブループリントに変更を加えた場合、たとえば、新しいパッケージを追加し、既存の RHEL for Edge イメージをこの新しいパッケージで更新する場合、--parent 引数を使用して更新された RHEL for Edge Commit (.tar) イメージを生成できます。--parent 引数には、URL 引数で指定されたリポジトリーに存在する ref を指定することも、展開された .tar イメージファイル内にある Commit ID を使用することもできます。ref 引数と Commit ID 引数はどちらも、ビルドしている新しいコミットの親を取得します。RHEL Image Builder は、ビルド中の新しいコミットの一部に影響する情報を親コミットから読み取ることができます。その結果、RHEL Image Builder は親コミットのユーザーデータベースを読み取り、パッケージで作成されたシステムユーザーとグループの UID と GID を保持します。

前提条件

  • RHEL for Edge イメージの既存のブループリントを更新している。
  • 既存の RHEL for Edge イメージ (OSTree コミット) がある。RHEL for Edge イメージのコミットの展開 を参照してください。
  • ビルド中の ref は、URL で指定された OSTree リポジトリーで利用できます。

手順

  1. RHEL for Edge Commit イメージを作成します。

    # composer-cli compose start-ostree --ref rhel/9/x86_64/edge --parent parent-OSTree-REF --url URL blueprint-name image-type

    以下に例を示します。

    • parent に基づいて新しい ref を使用して新しい RHEL for Edge Commit を作成するには、次のコマンドを実行します。

      # composer-cli compose start-ostree --ref rhel/9/x86_64/edge --parent rhel/9/x86_64/edge --url http://10.0.2.2:8080/repo rhel_update edge-commit
    • 同じ ref に基づいて新しい RHEL for Edge Commit を作成するには、次のコマンドを実行します。

      # composer-cli compose start-ostree --ref rhel/9/x86_64/edge --url http://10.0.2.2:8080/repo rhel_update edge-commit

      ここでは、以下のようになります。

      • --ref 引数は、OSTree リポジトリーの構築に使用したものと同じパス値を指定します。
      • --parent 引数は親コミットを指定します。rhel/9/x86_64/edge、または展開された .tar ファイルで見つかる Commit ID など、解決およびプルする ref を指定できます。
      • blueprint-name は RHEL for Edge のブループリント名です。
      • --url 引数は、イメージに埋め込むコミットの OSTree リポジトリーへの URL を指定します (例: http://10.0.2.2:8080/repo)。
      • image-typenetwork-based deploymentedge-commit です。

        注記
        • --parent 引数は、RHEL for Edge Commit (.tar) イメージタイプにのみ使用できます。--url 引数と --parent 引数をあわせて使用すると、RHEL for Edge Container (.tar) イメージタイプでエラーが発生します。
        • parent ref 引数を省略すると、システムは --ref 引数で指定された ref にフォールバックします。

        composer プロセスがキューに追加されたことを確認する画面が表示されます。また、作成されたイメージの UUID (Universally Unique Identifier) 番号も表示されます。UUID 番号を使用してビルドを追跡します。また、更なるタスクのために UUID 番号を手元に保管しておきます。

  2. イメージの作成状態を確認します。

    # composer-cli compose status

    出力には、以下の形式で状態が表示されます。

    <UUID> RUNNING date blueprint-name blueprint-version image-type
    注記

    イメージ作成プロセスの完了まで数分かかります。

    (オプション) イメージ作成プロセスを中断するには、以下を実行します。

    # composer-cli compose cancel <UUID>

    (オプション) 既存のイメージを削除するには、以下を実行します。

    # composer-cli compose delete <UUID>

イメージの作成が完了した後、既存の OSTree デプロイメントをアップグレードするには、以下が必要です。

5.1.4. Image Builder コマンドラインインターフェイスを使用した RHEL for Edge イメージのダウンロード

RHEL Image Builder コマンドラインインターフェイスを使用して RHEL for Edge イメージをダウンロードするには、以下の前提条件を満たしていることを確認してから、手順に従ってください。

前提条件

  • RHEL for Edge イメージを作成済みである。

手順

  1. RHEL for Edge イメージの状態を確認します。

    # composer-cli compose status

    出力には、以下が表示される必要があります。

    $ <UUID> FINISHED date blueprint-name blueprint-version image-type
  2. イメージをダウンロードします。

    # composer-cli compose image <UUID>

    RHEL Image Builder が、tar ファイル形式のイメージをカレントディレクトリーにダウンロードします。

    UUID 番号とイメージサイズは並んで表示されます。

    $ <UUID>-commit.tar: size MB

イメージには、コミットと、リポジトリーコンテンツに関する情報メタデータを含む json ファイルが含まれています。