RHEL for Edge イメージの作成、インストール、および管理

Red Hat Enterprise Linux 8

Red Hat Enterprise Linux 8 での RHEL for Edge イメージの作成、インストール、および管理

概要

このドキュメントは、イメージビルダーツールを使用してカスタマイズされた RHEL (rpm-ostree) イメージを設定し、イメージをエッジサーバーにリモートでインストールして管理するユーザーを対象としています。

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

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。

Red Hat ドキュメントへのフィードバック (英語のみ)

当社のドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。

特定の文章に関するコメントの送信

  1. Multi-page HTML 形式でドキュメントを表示し、ページが完全にロードされてから右上隅に Feedback ボタンが表示されていることを確認します。
  2. カーソルを使用して、コメントを追加するテキスト部分を強調表示します。
  3. 強調表示されたテキストの近くに表示される Add Feedback ボタンをクリックします。
  4. フィードバックを追加し、Submit をクリックします。

Bugzilla からのフィードバック送信 (アカウントが必要)

  1. Bugzilla の Web サイトにログインします。
  2. Version メニューから正しいバージョンを選択します。
  3. Summary フィールドにわかりやすいタイトルを入力します。
  4. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
  5. Submit Bug をクリックします。

第1章 RHEL for Edge イメージの概要

RHEL for Edge イメージは、Edge サーバーで RHEL をリモートにインストールするシステムパッケージを含む rpm-ostree イメージです。

システムパッケージには以下が含まれます。

  • Base OS パッケージ
  • コンテナーエンジンとしての podman
  • 追加の RPM コンテンツ

RHEL イメージとは異なり、RHEL for Edge はイミュータブルなオペレーティングシステムです。つまり、次の特性を持つ read-only root ディレクトリーが含まれています。

  • パッケージは root ディレクトリーから分離されている
  • パッケージのインストールにより、以前のバージョンへのロールバックを容易にするレイヤーが作成される
  • 切断された環境への効率的な更新
  • 複数のオペレーティングシステムのブランチとリポジトリーをサポート
  • ハイブリッド rpm-ostree パッケージシステムを搭載

Bare Metal、Appliance、および Edge サーバーに RHEL for Edge イメージをデプロイすることができます。

Image Builder ツールを使用して、カスタマイズされた RHEL for Edge イメージを作成できます。Red Hat Hybrid Cloud Console プラットフォームで エッジ管理アプリケーション にアクセスし、自動管理を設定して、RHEL for Edge イメージを作成することもできます。

エッジ管理アプリケーションは、イメージのプロビジョニングおよび登録方法を簡素化します。エッジ管理の詳細は、RHEL for Edge イメージの作成および自動管理に関するドキュメントの設定 を参照してください。

RHEL for Edge イメージを使用すると、以下を実行できます。

主な特長

1.1. RHEL for Edge 対応アーキテクチャー

現在、AMD と Intel 64 ビットシステムに RHEL for Edge イメージをデプロイすることができます。

注記

現在、RHEL for Edge は ARM システムをサポートしていません。

1.2. RHEL for Edge イメージの作成とデプロイ方法

RHEL for Edge イメージの設定とデプロイには、次の 2 つのフェーズが含まれます。

  1. イメージビルダーツールを使用して RHEL rpm-ostree イメージを作成します。composer-cli ツールのコマンドラインインターフェイスから Image Builder にアクセスするか、RHEL Web コンソールのグラフィカルユーザーインターフェイスを使用できます。
  2. RHEL インストーラーを使用したイメージのデプロイ

RHEL for Edge イメージの作成中、以下のイメージタイプのいずれかを選択できます。別の RHEL for Edge イメージを設定するには、ネットワークアクセスが必要な場合と必要でない場合があります。次の表を参照してください。

表1.1 RHEL for Edge イメージタイプ

イメージタイプ説明ネットワークベースのデプロイメントに適していますネットワークベース以外のデプロイメントに適しています

RHEL for Edge Commit (.tar)

コミットイメージは、完全なオペレーティングシステムが含まれていても、直接起動することはできません。Commit イメージタイプを起動するには、それをデプロイする必要があります。

はい

いいえ

RHEL for Edge Container (.tar)

このコンテナーでは、OSTree のコミットを作成し、Web サーバーのある OCI コンテナーに埋め込みます。コンテナーが起動すると、Web サーバーは OSTree リポジトリーとしてコミットを提供します。

いいえ

はい

RHEL for Edge Installer (.iso)

RHEL for Edge Installer イメージタイプは、実行中のコンテナーからコミットをプルし、組み込みの OSTree コミットを使用するように設定されたキックスタートファイルを持つ、インストール可能なブート ISO を作成します。

いいえ

はい

RHEL for Edge Raw image (.raw.xz)

圧縮された Raw イメージは、既存のデプロイ済み OSTree コミットを含むパーティションレイアウトを含むファイルから設定されています。ハードディスクで RHEL Raw イメージをフラッシュするか、仮想マシンで起動できます。

はい

はい

RHEL for Edge Simplified Installer (.iso)

Simplified Installer イメージタイプは、実行中のコンテナーからコミットをプルし、組み込みの OSTree コミットを使用するように設定されたキックスタートファイルを持つ、インストール可能なブート ISO を作成します。

はい

はい

イメージタイプはその内容によって異なるため、各種デプロイメント環境に適しています。

1.3. ネットワークベース以外のデプロイメント

Image Builder を使用して、要件に沿った柔軟な RHEL rpm-ostree イメージを作成し、Anaconda を使用してお使いの環境にデプロイします。

composer-cli ツールのコマンドラインインターフェイスから Image Builder にアクセスするか、RHEL Web コンソールのグラフィカルユーザーインターフェイスを使用できます。

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

  1. RHEL システムをインストールおよび登録する
  2. Image Builder のインストール
  3. Image Builder を使用して RHEL for Edge Container イメージのカスタムブループリントを作成する
  4. RHEL for Edge のブループリントを Image Builder にインポートする
  5. OSTree リポジトリーとしてコミットをデプロイする準備が整った Web サーバーで、OCI コンテナーに組み込む RHEL for Edge イメージを作成する
  6. RHEL for Edge Container イメージファイルをダウンロードする
  7. RHEL for Edge Container コミットでリポジトリーを提供するコンテナーをデプロイする
  8. Image Builder を使用して RHEL for Edge インストーラーイメージの別のブループリントを作成する
  9. RHEL for Edge Container メージを組み込んだ実行中のコンテナーからコミットをプルするように設定された RHEL for Edge Installer イメージを作成する
  10. RHEL for Edge Installer イメージをダウンロードする
  11. インストールを実行する

以下の図は、RHEL for Edge イメージのネットワークを使用しないデプロイメントワークフローを表しています。

図1.1 非ネットワーク環境での RHEL for Edge のデプロイ

RHEL for Edge のネットワークを使用しないデプロイメントワークフロー

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

Image Builder を使用して要件に合わせて柔軟な RHEL rpm-ostree イメージを作成し、Anaconda を使用してそれらを環境にデプロイします。イメージビルダーは、デプロイセットアップの詳細を自動的に識別し、イメージ出力を .tar ファイルとして エッジコミット として生成します。

composer-cli ツールのコマンドラインインターフェイスから Image Builder にアクセスするか、RHEL Web コンソールのグラフィカルユーザーインターフェイスを使用できます。

RHEL for Edge イメージは、以下の概要手順を実行して、作成およびデプロイすることができます。

  1. RHEL システムをインストールおよび登録する
  2. Image Builder のインストール
  3. Image Builder を使用した RHEL for Edge イメージのブループリントを作成する
  4. RHEL for Edge のブループリントを Image Builder にインポートする
  5. RHEL for Edge Commit (.tar) イメージを作成する
  6. RHEL for Edge イメージファイルのダウンロード
  7. Web サーバーを設定する
  8. RHEL for Edge Installer (.iso) の新しいブループリントを作成する
  9. RHEL for Edge Commit (.tar) アーティファクトの OSTree コンテンツを指定して、RHEL for Edge Installer (.iso) イメージを作成する
  10. 作成した RHEL for Edge Installer ISO イメージをダウンロードする
  11. RHEL for Edge Installer ISO イメージを使用してエッジデバイスを起動する

以下の図は、RHEL for Edge ネットワークイメージのデプロイメントワークフローを表しています。

図1.2 ネットワークベースの環境での RHEL for Edge のデプロイ

RHEL for Edge のネットワークベースのデプロイメントワークフロー

1.5. RHEL RPM イメージと RHEL for Edge イメージの違い

従来のパッケージベースの RPM 形式で RHEL システムイメージや、RHEL for Edge (rpm-ostree) イメージを作成できます。

従来のパッケージベースの RPM を使用して、従来のデータセンターに RHEL をデプロイすることができます。ただし、RHEL for Edge イメージを使用すると、従来のデータセンター以外のサーバーに RHEL をデプロイすることができます。これらのサーバーには、大量のデータの処理が、データが生成されるソース (Edge サーバー) に最も近いところで行われるシステムが含まれます。

RHEL for Edge (rpm-ostree) イメージはパッケージマネージャーではありません。個々のファイルではなく、完全な起動可能なファイルシステムツリーのみをサポートします。これらのイメージには、これらのファイルがどのように生成されたか、またはそれらの起源に関連するものなど、個々のファイルに関する情報は含まれていません。

rpm-ostree イメージには、追加のアプリケーションを /var ディレクトリーにインストールするための別のメカニズムであるパッケージマネージャーが必要です。これにより、rpm-ostree イメージは、/var ディレクトリーおよび /etc ディレクトリーの状態を維持しながら、オペレーティングシステムを変更しないようにします。アトミック更新により、更新のロールバックとバックグラウンドステージングが可能になります。

RHEL for Edge イメージがパッケージベースの RHEL RPM イメージとどのように異なるかを確認するには、以下の表を参照してください。

表1.2 RHEL RPM イメージと RHEL for Edge イメージの違い

キーの属性

RHEL RPM イメージ

RHEL for Edge イメージ

OS アセンブリー

パッケージをローカルでアセンブルして、イメージを形成できます。

パッケージは、システムにインストールできる ostree でアセンブルされます。

OS の更新

yum update を使用して、有効なリポジトリーから利用可能な更新を適用することができます。

/etc/ostree/remotes.d/ の ostree リモートで新しいコミットが利用可能な場合は、rpm-ostree upgrade を使用して更新をステージできます。更新はシステムの再起動時に有効になります。

リポジトリー

パッケージに YUM リポジトリーが含まれる

パッケージに Ostree リモートリポジトリーが含まれる

ユーザーアクセスパーミッション

読み書き

読み取り専用 (/usr)

データの永続性

tmpfs 以外のマウントポイントにイメージをマウントできます。

/etc および /var は読み書き可能で、永続的なデータを含みます。

第2章 Image Builder の設定

Image Builder を使用して、カスタマイズした RHEL for Edge イメージを作成します。RHEL システムに Image Builder をインストールすると、Image Builder は RHEL Web コンソールでアプリケーションとして利用できます。composer-cli ツールのコマンドラインインターフェイスで Image Builder にアクセスすることもできます。

注記

Image Builder を仮想マシンにインストールすることが推奨されます。

Image Builder をインストールする環境で、最初にシステム要件を満たしてから、インストールするようにしてください。

2.1. Image Builder のシステム要件

Image Builder が実行する環境 (仮想マシンなど) は、次の表に記載されている要件を満たす必要があります。

表2.1 Image Builder のシステム要件

パラメーター

最低要求値

システムのタイプ

専用の仮想マシン

プロセッサー

2 コア

メモリー

4 GiB

ディスク容量

20 GiB

アクセス権限

管理者レベル (root)

ネットワーク

インターネットへの接続

注記

ホストに Image Builder をインストールして実行するには、20 GiB のディスク容量要件で十分です。イメージビルドをビルドしてデプロイするには、追加の専用ディスク領域を割り当てる必要があります。

2.2. Image Builder のインストール

Image Builder を専用の仮想マシンにインストールするには、以下の手順を行います。

前提条件

  • 仮想マシンが作成され、オンの状態になっている。
  • RHEL をインストールし、RHSM または Red Hat Satellite にサブスクライブしている。

手順

  1. 仮想マシンに以下のパッケージをインストールします。

    • osbuild-composer
    • composer-cli
    • cockpit-composer
    • bash-completion
    • firewalld
    # yum install osbuild-composer composer-cli cockpit-composer bash-completion firewalld

    Image Builder は、RHEL Web コンソールでアプリケーションとしてインストールされます。

  2. 仮想マシンを再起動します。
  3. Web コンソールへのアクセスを許可するように、システムのファイアウォールを設定します。

    # firewall-cmd --add-service=cockpit && firewall-cmd --add-service=cockpit --permanent
  4. Image Builder を有効にします。

    # systemctl enable osbuild-composer.socket cockpit.socket --now

    lorax-composer サービスおよび cockpit サービスは、最初のアクセスで自動的に起動します。

  5. システムを再起動しなくても、composer-cli コマンドのオートコンプリート機能がすぐに動作するように、シェル設定スクリプトを読み込みます。

    $ source /etc/bash_completion.d/composer-cli

第3章 Image Builder リポジトリーの管理

3.1. Image Builder のデフォルトのシステムリポジトリー

osbuild-composer バックエンドは、/etc/yum.repos.d/ にあるシステムのリポジトリーを継承しません。代わりに、/usr/share/osbuild-composer/repositories ディレクトリーに定義された独自の公式リポジトリーのセットがあります。これには、追加のソフトウェアをインストールしたり、すでにインストールされているプログラムを新しいバージョンに更新したりするためのベースシステム RPM が含まれている Red Hat 公式リポジトリーが含まれます。公式リポジトリーをオーバーライドするには、/etc/osbuild-composer/repositories オーバーライドを定義する必要があります。このディレクトリーはユーザー定義のオーバーライド用であり、ここにあるファイルは /usr ディレクトリー内のファイルよりも優先されます。

設定ファイルは /etc/yum.repos.d/ 内のファイルから知られている通常の YUM リポジトリー形式ではありません。それらは単純な JSON ファイルになります。

3.2. システムリポジトリーのオーバーライド

次の手順で、/etc/osbuild-composer/repositories ディレクトリーの Image Builder にリポジトリーのオーバーライドを設定できます。

注記

RHEL 8.5 リリース以前では、リポジトリーオーバーライドの名前は rhel-8.json です。RHEL 8.5 以降、名前はマイナーバージョン (rhel-84.jsonrhel-85.json など) も尊重します。

前提条件

  • ホストシステムからアクセスできるカスタムリポジトリーがあります

手順

  1. リポジトリーのオーバーライドを保存するディレクトリーを作成します。

    $ sudo mkdir -p /etc/osbuild-composer/repositories
  2. 独自の JSON ファイル構造を作成できます。
  3. RHEL バージョンに対応する名前を使用して、JSON ファイルを作成します。または、配布用のファイルを /usr/share/osbuild-composer/ からコピーして、その内容を変更することもできます。

    RHEL 8 の場合は、/etc/osbuild-composer/repositories/rhel-87.json を使用します。

  4. 次の例のような構造を JSON ファイルに追加します。

    {
        "<ARCH>": [
            {
                "name": "baseos",
                "metalink": "",
                "baseurl": "http://mirror.example.com/composes/released/RHEL-8/8.0/BaseOS/x86_64/os/",
                "mirrorlist": "",
                "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\n (…​)",
                "check_gpg": true,
                "metadata_expire": ""
            }
        ]
    }

    次の属性から 1 つだけ指定します。

    • metalink - リポジトリーリンクの可用性とエラー修正を向上させます。
    • mirrorlist - パッケージリポジトリーを指す URL のリスト。
    • baseurl - インストールに必要なパッケージを含むリポジトリーへのリンク。

      残りのフィールドは任意です。

      1. または、ディストリビューションの JSON ファイルをコピーできます。

        1. 作成したディレクトリーにリポジトリーファイルをコピーします。次のコマンドで、rhel-version.json をご使用の RHEL バージョン (例: rhel-8.json) に置き換えます。

          $  cp /usr/share/osbuild-composer/repositories/rhel-version.json /etc/osbuild-composer/repositories/
  5. テキストエディターを使用して、rhel-8.json ファイルの baseurl パスを編集し、保存します。以下に例を示します。

    $ vi /etc/osbuild-composer/repositories/rhel-version.json
  6. osbuild-composer.service を再起動します。

    $ sudo systemctl restart osbuild-composer.service

検証

  • リポジトリーが正しい URL を指しているか確認します。

    $ cat /etc/yum.repos.d/redhat.repo

    リポジトリーは /etc/yum.repos.d/redhat.repo ファイルからコピーされた正しい URL を指していることが分かります。

3.3. サブスクリプションをサポートするシステムリポジトリーのオーバーライド

osbuild-composer サービスは /etc/yum.repos.d/redhat.repo ファイルで定義されているシステムのサブスクリプションを使用することができます。osbuild-composer でシステムサブスクリプションを使用するには、次を持つリポジトリーオーバーライドを定義します。

  • /etc/yum.repos.d/redhat.repo で定義されているリポジトリーと同じ baseurl
  • "rhsm": true の値は、JSON オブジェクトで定義されます。

前提条件

手順

  1. /etc/yum.repos.d/redhat.repo ファイルから baseurl を取得します。

    # cat /etc/yum.repos.d/redhat.repo
    [AppStream]
    name = AppStream mirror example
    baseurl = https://mirror.example.com/RHEL-8/8.0/AppStream/x86_64/os/
    enabled = 1
    gpgcheck = 0
    sslverify = 1
    sslcacert = /etc/pki/ca1/ca.crt
    sslclientkey = /etc/pki/ca1/client.key
    sslclientcert = /etc/pki/ca1/client.crt
    metadata_expire = 86400
    enabled_metadata = 0
  2. 同じ baseurl を使用するようにリポジトリーオーバーライドを設定し、rhsm を true に設定します。

    {
        "x86_64": [
            {
                "name": "AppStream mirror example",
                "baseurl": "https://mirror.example.com/RHEL-8/8.0/AppStream/x86_64/os/",
                "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\n (…​)",
                "check_gpg": true,
                "rhsm": true
            }
        ]
    }
    注記

    osbuild-composer は、自動的に /etc/yum.repos.d/ で定義されたリポジトリーを使用していません。システムリポジトリーのオーバーライドとして、composer-cli を使用して追加の source として手動で指定する必要があります。システムリポジトリーのオーバーライドは通常、BaseOS および AppStream リポジトリーに使用されますが、composer-cli ソースは他のすべてのリポジトリーに使用されます。

その結果、Image Builder はホストシステムから /etc/yum.repos.d/redhat.repo ファイルを読み取り、それをサブスクリプションのソースとして使用します。

第4章 RHEL Web コンソールで Image Builder を使用して RHEL for Edge イメージを作成する

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

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

以下の概要手順を実行して、RHEL Web コンソールで Image Builder を使用し、RHEL for Edge イメージを作成することができます。

  1. RHEL Web コンソールでの Image Builder へのアクセス
  2. RHEL for Edge イメージのブループリントの作成します。
  3. RHEL for Edge イメージの作成します。次のイメージを作成できます。

    • RHEL for Edge Commit イメージ。
    • RHEL for Edge コンテナーイメージ。
    • RHEL for Edge Installer イメージ。
  4. RHEL for Edge イメージをダウンロードする

4.1. RHEL Web コンソールでの Image Builder へのアクセス

RHEL Web コンソールで Image Builder にアクセスするには、以下の前提条件を満たしていることを確認してから、手順に従ってください。

前提条件

  • RHEL システムをインストール済みである。
  • システムの管理者権限を持っている。
  • RHEL システムを Red Hat Subscription Manager (RHSM) または Red Hat Satellite Server にサブスクライブしている。
  • システムに電源が入り、ネットワーク経由でアクセスできる。
  • システムに Image Builder がインストール済み。

手順

  1. RHEL システムで、Web ブラウザーで https://localhost:9090/ にアクセスします。
  2. Image Builder にリモートでアクセスする方法の詳細は、RHEL 8 で Web コンソールを使用したシステムの管理 を参照してください。
  3. 管理ユーザーアカウントを使用して、Web コンソールにログインします。
  4. Web コンソールで、左側のメニューの Apps をクリックします。
  5. Image Builder をクリックします。

    Image Builder ダッシュボードが右側のペインに開きます。これで、RHEL for Edge イメージのブループリントの作成に進むことができます。

4.2. RHEL Web コンソールの Image Builder を使用した RHEL for Edge Commit イメージのブループリントの作成

RHEL Web コンソールの Image Builder を使用して RHEL for Edge Commit イメージのブループリントを作成するには、以下の前提条件を満たしていることを確認してから、手順に従ってください。

前提条件

  • RHEL システムで、Image Builder のダッシュボードを開いている。

手順

  1. Image Builder のダッシュボードで Create Blueprint をクリックします。

    Create Blueprint のダイアログボックスが表示されます。

  2. 作成する Blueprint の名前と、必要に応じて説明を入力します。
  3. Create をクリックします。

    Image Builder のダッシュボードには、作成したブループリントが一覧表示されます。

4.3. RHEL Web コンソールで Image Builder を使用した RHEL for Edge Commit イメージの作成

RHEL for Edge Commit (.tar) イメージタイプには完全なオペレーティングシステムが含まれていますが、直接起動することはできません。Commit イメージタイプを起動するには、実行中のコンテナーにデプロイする必要があります。

RHEL Web コンソールの Image Builder を使用して RHEL for Edge Commit イメージを作成するには、次の手順に従います。

前提条件

  • RHEL システムで、Image Builder ダッシュボードにアクセス済みである。

手順

  1. Image Builder のダッシュボードで、RHEL for Edge Commit イメージ用に作成したブループリントの Create Image をクリックします。

    特定のブループリントを検索するには、Filter By Name のテキストボックスにブループリント名を入力してから Enter キーを押します。

  2. Create Image ウィザードで、以下の手順を実行します。

    1. Image output ページで、Image output type ドロップダウンリストから、ネットワークベースのデプロイ用に RHEL for Edge Commit を選択します。
    2. OSTree ページから、以下を入力します。

      1. リポジトリー URL: イメージに埋め込むコミットの OSTree リポジトリーへの URL を指定します。例: http://10.0.2.2:8080/repository/
      2. 親コミット: 以前のコミットを指定するか、現時点でコミットがない場合は空のままにします。
      3. Ref テキストボックスで、コミットを作成する場所の参照パスを指定します。デフォルトでは、Web コンソールは rhel/8/$ARCH/edge を指定します。$ARCH の値は、ホストマシンによって決定されます。Next をクリックします。
  3. Customization ページページ:

    1. System ページで以下を行います。

      1. ホスト名を入力します。フィールドを空のままにすると、システムによりホスト名が決定されます。Next をクリックします。
    2. Users ページで Add user をクリックします。

      1. ユーザー名とパスワードを入力します。
      2. オプション: SSH キーを入力し、Server administrator フィールドを確認します。Next をクリックします。
    3. Packages ページで:

      1. 利用可能なパッケージ 検索フィールドで、追加するパッケージを入力します。

        1. > ボタンをクリックして、パッケージを 1 つ選択します。
        2. オプション: >> ボタンをクリックして、すべてのパッケージを選択します。Next をクリックします。
    4. Review ページで、カスタマイズを確認します。Save blueprint をクリックします。
  4. Create をクリックします。

    Image Builder は、作成したブループリントの RHEL for Edge Commit イメージの作成を開始します。

    注記

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

検証

  1. RHEL for Edge Commit イメージの作成の進行状況を確認するには、次の手順に従います。

    1. ブループリント名 をクリックします。
    2. Images タブをクリックします。

イメージの作成プロセスが完了したら、結果の RHEL for Edge Commit (.tar) イメージをダウンロードできます。

4.4. RHEL Web コンソールで Image Builder を使用した Edge Container イメージの RHEL の作成

RHEL for Edge Container (.tar) を選択すると、RHEL for Edge イメージを作成できます。RHEL for Edge Container (.tar) イメージタイプでは、OSTree のコミットを作成し、Web サーバーのある OCI コンテナーに埋め込みます。コンテナーが起動すると、Web サーバーは OSTree リポジトリーとしてコミットを提供します。

この手順に従って、RHEL Web コンソールの Image Builder を使用して RHEL for Edge Container イメージを作成します。

前提条件

  • RHEL システムで、Image Builder ダッシュボードにアクセス済みである。
  • ブループリントを作成しました。

手順

  1. Image Builder ダッシュボードで、RHEL for Edge Container イメージ用に作成したブループリントの Create Imageクリック します。特定のブループリントを検索するには、Filter By Name のテキストボックスにブループリント名を入力してから Enter キーを押します。
  2. Create Image ウィザードで、以下の手順を実行します。

    1. Image output ページの Image output type ドロップダウンリストから、ネットワークベースのデプロイメントに RHEL for Edge Container (.tar) を選択します。
    2. OSTree ページから、以下を入力します。

      1. リポジトリー URL: イメージに埋め込むコミットの OSTree リポジトリーへの URL を指定します。例: http://10.0.2.2:8080/repository/
      2. 親コミット: 以前のコミットを指定するか、現時点でコミットがない場合は空のままにします。
      3. Ref テキストボックスで、コミットを作成する場所の参照パスを指定します。デフォルトでは、Web コンソールは rhel/8/$ARCH/edge を指定します。$ARCH の値は、ホストマシンによって決定されます。Next をクリックします。
  3. Customization ページページ:

    1. System ページで以下を行います。

      1. ホスト名を入力します。フィールドを空のままにすると、システムによりホスト名が決定されます。Next をクリックします。
    2. Users ページで Add user をクリックします。

      1. ユーザー名とパスワードを入力します。
      2. オプション: SSH キーを入力し、Server administrator フィールドを確認します。Next をクリックします。
    3. Packages ページで:

      1. 利用可能なパッケージ 検索フィールドで、追加するパッケージを入力します。

        1. > ボタンをクリックして、パッケージを 1 つ選択します。
        2. オプション: >> ボタンをクリックして、すべてのパッケージを選択します。Next をクリックします。
    4. Review ページで、カスタマイズを確認します。Save blueprint をクリックします。
  4. Create をクリックします。

    Image Builder は、作成したブループリントの RHEL for Edge Commit イメージの作成を開始します。

    注記

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

検証

  1. RHEL for Edge Commit イメージの作成の進行状況を確認するには、次の手順に従います。

    1. ブループリント名 をクリックします。
    2. Images タブをクリックします。

イメージの作成プロセスが完了したら、結果の RHEL for Edge Container (.tar) イメージをダウンロードできます。

4.5. RHEL Web コンソールで Image Builder を使用した RHELfor Edge インストーラーイメージの作成

RHEL for Edge Installer (.iso) を選択すると、非ネットワークベースのデプロイメント用の RHEL for Edge インストーラーイメージを作成できます。RHEL for Edge Installer (.iso) イメージタイプは、RHEL for Edge Container (.tar) によって提供される実行中のコンテナーから OSTree コミットリポジトリーをプルし、組み込み OSTree を使用するように設定されたキックスタートファイルを使用してインストール可能なブート ISO イメージを作成します。

以下の手順に従って、RHEL Web コンソールで Image Builder を使用して RHEL for Edge イメージを作成します。

前提条件

手順

  1. Image Builder ダッシュボードで、RHEL for Edge インストーラーイメージ用に作成したブループリントの Create Image をクリックします。

    特定のブループリントを検索するには、Filter By Name のテキストボックスにブループリント名を入力してから Enter キーを押します。

  2. Create Image ウィザードで、以下の手順を実行します。
  3. Image output ページで、Image output type ドロップダウンリストから、RHEL for Edge Installer (.iso) イメージを選択します。

    1. OSTree ページから、以下を入力します。

      1. リポジトリー URL: イメージに埋め込むコミットの OSTree リポジトリーへの URL を指定します。例: http://10.0.2.2:8080/repository/
      2. Ref テキストボックスで、コミットを作成する場所の参照パスを指定します。デフォルトでは、Web コンソールは rhel/8/$ARCH/edge を指定します。$ARCH の値は、ホストマシンによって決定されます。Next をクリックします。
  4. Customization ページページ:

    1. System ページで以下を行います。

      1. ホスト名を入力します。フィールドを空のままにすると、システムによりホスト名が決定されます。Next をクリックします。
    2. Users ページで Add user をクリックします。

      1. ユーザー名とパスワードを入力します。
      2. オプション: SSH キーを入力し、Server administrator フィールドを確認します。Next をクリックします。
    3. Packages ページで:

      1. 利用可能なパッケージ 検索フィールドで、追加するパッケージを入力します。

        1. > ボタンをクリックして、パッケージを 1 つ選択します。
        2. オプション: >> ボタンをクリックして、すべてのパッケージを選択します。Next をクリックします。
    4. Review ページで、カスタマイズを確認します。Save blueprint をクリックします。
  5. Create をクリックします。

    Image Builder は、作成したブループリントの RHEL for Edge Commit イメージの作成を開始します。

    注記

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

検証

  1. RHEL for Edge Commit イメージの作成の進行状況を確認するには、次の手順に従います。

    1. ブループリント名 をクリックします。
    2. Images タブをクリックします。

イメージの作成プロセスが完了したら、作成される RHEL for Edge Installer (.iso) イメージをダウンロードできます。

  1. Type ドロップダウンリストから、RHEL for Edge Installer (.iso) を選択します。
  2. Repository URL テキストボックスで、イメージに埋め込むコミットの実行中のコンテナー OSTree リポジトリーへの URL を指定します。例: http://10.0.2.2:8080/repository/
  3. Parent commit テキストボックスは、現時点でコミットがない場合は以前のコミットを指定するか、空欄のままにすることができます。
  4. Ref テキストボックスでは、参照パスは RHEL for Edge Container イメージ作成からの Ref と一致する必要があります。

    1. Create をクリックします。

      Image Builder は、作成したブループリントの RHEL for Edge Installer イメージの作成を開始します。

    2. RHEL for Edge Installer イメージの作成の進行状況を確認するには:
  5. ブレッドクラムから ブループリント name をクリックします。
  6. Images タブをクリックします。

    注記

    イメージの作成プロセスは、完了するまでに最大 20 分かかります。イメージ作成プロセスをキャンセルするには、More Options メニューから Stop をクリックします。

イメージの作成プロセスが完了したら、結果の RHEL for Edge Installer (.iso) イメージをダウンロードして、ISO イメージをデバイスで起動できます。

4.6. RHEL for Edge イメージのダウンロード

イメージビルダーを使用して RHEL for Edge イメージを正常に作成したら、ローカルホストにイメージをダウンロードします。

手順

以下は、イメージをダウンロードするための手順です。

  1. More Options メニューの Download をクリックします。

    Image Builder ツールは、デフォルトのダウンロード場所にファイルをダウンロードします。

ダウンロードされたファイルは、RHEL for Edge Commit および RHELfor Edge Container イメージの OSTree リポジトリーを含む .tar ファイル、または RHEL for Edge Installer イメージの .iso ファイルと OSTree リポジトリーで設定されます。このリポジトリーには、コミットと、リポジトリーのコンテンツに関する情報のメタデータを含む json ファイルが含まれています。

4.7. 関連情報

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

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

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

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

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

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

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

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

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

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

    • 特定のバージョンを指定する場合は、バージョン番号を正確に指定してください (例: 8.0 など)。
    • 利用可能な最新バージョンを指定する場合は、アスタリスク * を使用します。
    • 最新のマイナーバージョンを指定する場合は、8.* などの形式を使用してください。
  3. ブループリントを 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 Commit コマンドラインインターフェイスを使用した RHEL for Edge イメージの作成

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

前提条件

  • 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. Image Builder コマンドラインインターフェイスを使用した、親コミットによる RHEL for Edge イメージ更新の作成

既存のブループリントで変更を行った場合 (例えば、新しいパッケージを追加し、既存の RHEL for Edge イメージをこの新しいパッケージで更新したい場合)、親コミット ID を使用して、更新された RHEL for Edge Commit(.tar) イメージを生成することができます。

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

前提条件

  • RHEL for Edge イメージの既存のブループリントを更新している。
  • 既存の RHEL for Edge イメージ (OSTree コミット) がある。Extracting RHEL for Edge image commit を参照してください。

手順

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

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

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

    • --ref は、OSTree リポジトリーの構築に使用したパスの値と同じです。
    • --parent は、親 OSTree Ref です(例: rhel/9/x86_64/edge )。
    • blueprint-name は RHEL for Edge のブループリント名です。
    • -url は、イメージに埋め込むコミットの OSTree リポジトリーへの URL です(例: http://10.0.2.2:8080/repository/
    • image-typenetwork-based deploymentedge-commit です。

      注記

      --parent 引数は、RHEL for Edge Commit (.tar)イメージタイプにのみ使用できます。--url および --parent 引数を一緒に使用すると、他のイメージタイプでエラーが発生します。

      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 デプロイメントをアップグレードするには、以下が必要です。

  • リポジトリーを設定します。Deploying a RHEL for Edge imageを参照してください。
  • このリポジトリーをリモート、つまり OSTree コンテンツをホストする http または https エンドポイントとして追加します。
  • 新しい OSTree コミットを既存の稼働中のインスタンスにプルします。Deploying RHEL for Edge image updates manuallyを参照してください。

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

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>

    Image Builder は、イメージを tar ファイルとしてカレントディレクトリーにダウンロードします。

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

    $ <UUID>-commit.tar: size MB

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

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

RHEL for Edge Container イメージと RHEL for Edge Installer イメージを使用して OSTree ベースのシステムをインストールし、後で切断された環境のデバイスにデプロイできるブート ISO イメージを構築するには、以下の手順を実行します。

5.2.1. Image Builder CLI を使用した Edge Container ブループリントの RHEL の作成

RHEL for Edge Container イメージのブループリントを作成するには、以下のステップを実行します。

手順

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    # composer-cli blueprints depsolve blueprint-name

5.2.2. Image Builder CLI を使用した RHEL for Edge ブループリントの RHEL の作成

ブループリントを作成して RHEL for Edge Installer (.iso) イメージを構築し、ユーザーアカウントを指定して、インストール時にシステム上に 1 人以上のユーザーを自動的に作成できます。See RHEL for Edge イメージのブループリントの管理ユーザーアカウントの作成.インストール時にシステムにユーザーを作成します。

警告

customizations.user カスタマイズを使用してブループリントでユーザーを作成すると、ブループリントはユーザーを /usr/lib/passwd ディレクトリーの下に、パスワードを /usr/etc/shadow ディレクトリーの下に作成します。OSTree 更新を使用している実行中のシステムで、さらにバージョンの高いイメージのパスワードを変更することはできない点に注意してください。ブループリントで作成したユーザーは、作成したシステムにアクセスするためだけに使用する必要があります。システムにアクセスしたら、useradd コマンドなどを使用してユーザーを作成する必要があります。

RHEL for Edge Installer イメージのブループリントを作成するには、以下の手順を実行します。

手順

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

    name = "blueprint-installer"
    description = "blueprint-for-installer-image"
    version = "0.0.1"
    
    [[customizations.user]]
    name = "user"
    description = "account"
    password = "user-password"
    key = "user-ssh-key "
    home = "path"
    groups = ["user-groups"]

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

    • blueprint-name は名前で、ブループリント-text-description はブループリントの説明になります。
    • 0.0.1 は、Semantic Versioning スキームに従って、バージョン番号に置き換えます。
  2. ブループリントを Image Builder サーバーにプッシュ (インポート) します。

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

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

    # composer-cli blueprints depsolve blueprint-name

5.2.3. Image Builder CLI を使用した Edge Container イメージの RHEL の作成

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

前提条件

  • RHEL for Edge Container イメージのブループリントを作成しました。

手順

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

    # composer-cli compose start-ostree --ref rhel/8/x86_64/edge --url URL-OSTree-repository blueprint-name image-type

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

    • --ref は、お客様が ostree リポジトリーの構築に使用した値と同じです
    • --url は、イメージに埋め込むコミットの OSTree リポジトリーへの URL です例: http://10.0.2.2:8080/repository/RHEL for Edge イメージをインストールするための Web サーバーの設定 を参照してください。
    • blueprint-name は RHEL for Edge のブループリント名です。
    • image-type は、非ネットワークベースのデプロイメント 用の edge-container です。

      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>

    イメージの準備ができたら、ネットワーク以外のデプロイメント に使用できます。ネットワークベース以外のデプロイメント用の RHEL for Edge コンテナーイメージの作成 を参照してください。

5.2.4. ネットワークベース以外のデプロイメント向けのコマンドラインインターフェイスを使用した RHEL for Edge インストーラーイメージの作成

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

前提条件

  • RHEL for Edge Installer イメージのブループリントを作成している。
  • RHEL for Edge Container イメージを作成し、Web サーバーを使用してデプロイしました。

手順

  1. RHEL for Edge Installer インストーラーイメージの作成を開始します。

    # composer-cli compose start-ostree --ref rhel/8/x86_64/edge --url URL-OSTree-repository blueprint-name image-type

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

    • ref は、お客様が ostree リポジトリーの構築に使用した値と同じです。
    • URL-OSTree-repository は、イメージに埋め込むコミットの OSTree リポジトリーへの URL です。例: http://10.0.2.2:8080/repository/ネットワークベース以外のデプロイメント用の RHEL for Edge コンテナーイメージの作成 を参照してください。
    • blueprint-name は、RHEL for Edge Installer のブループリント名です。
    • image-typeedge-installer です。

      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>

    イメージの準備ができたら、ネットワーク以外のデプロイメント に使用できます。ネットワークベース以外のデプロイメント向けの RHEL for Edge イメージのインストール を参照してください。

5.2.5. Image Builder CLI を使用した RHEL for Edge Installer イメージのダウンロード

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

前提条件

  • RHEL for Edge Installer イメージを作成している。

手順

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

    # composer-cli compose status

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

    $ <UUID> FINISHED date blueprint-name blueprint-version image-type
  2. イメージをダウンロードしてください。

    # composer-cli compose image <UUID>

    Image Builder は、イメージを .iso ファイルとしてカレントディレクトリーにダウンロードします。

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

    $ <UUID>-boot.iso: size MB

結果のイメージは、起動可能な ISO イメージです。

5.3. サポートされているイメージのカスタマイズ

ブループリントに追加の RPM パッケージを追加するか、サービスを有効にするか、カーネルコマンドラインパラメーターをカスタマイズすることで、イメージをカスタマイズできます。ブループリント内でいくつかのイメージのカスタマイズを使用できます。これらのオプションを利用するには、最初にブループリントでカスタマイズを設定し、それを Image Builder にインポート (プッシュ) する必要があります。

注記

Web コンソールで Image Builder を使用する場合、これらのカスタマイズはサポートされません。

パッケージグループの選択
[[packages]]
name = "package_group_name"

"package_group_name" は、パッケージグループの名前に置き換えます。たとえば、"@server with gui" です。

イメージのホスト名の設定
[customizations]
hostname = "baseimage"
作成されるシステムイメージに対するユーザー指定
[[customizations.user]]th
name = "USER-NAME"
description = "USER-DESCRIPTION"
password = "PASSWORD-HASH"
key = "PUBLIC-SSH-KEY"
home = "/home/USER-NAME/"
shell = "/usr/bin/bash"
groups = ["users", "wheel"]
uid = NUMBER
gid = NUMBER

GID はオプションであり、イメージに既に存在している必要があります。必要に応じて、パッケージで作成するか、ブループリントで customizations.group エントリーを使用して GID を作成します。

重要

password hash を生成するには、システムに python3 をインストールする必要があります。

# yum install python3

PASSWORD-HASH は、実際の password hash に置き換えます。password hash を生成するには、次のようなコマンドを使用します。

$ python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'

PUBLIC-SSH-KEY を、実際の公開鍵に置き換えます。

その他のプレースホルダーを、適切な値に置き換えます。

name を入力する必要があります。不要な行は省略できます。

追加するすべてのユーザーにこのブロックを繰り返します。

作成されるシステムイメージに対するグループ指定
[[customizations.group]]
name = "GROUP-NAME"
gid = NUMBER

追加するすべてのグループにこのブロックを繰り返します。

既存ユーザーの SSH 鍵を設定します。
[[customizations.sshkey]]
user = "root"
key = "PUBLIC-SSH-KEY"
注記

既存のユーザーの SSH キーの設定のカスタマイズは、既存ユーザーにのみ適用されます。ユーザーの作成と SSH キーの設定は、システムイメージのカスタマイズに関するユーザー仕様 を参照してください。

デフォルトにカーネルの起動パラメーターオプションを追加
[customizations.kernel]
append = "KERNEL-OPTION"
デフォルトでは、Image Builder はデフォルトのカーネルをイメージにビルドします。ただし、ブループリントで次の設定を使用してカーネルをカスタマイズできます
[customizations.kernel]
name = "KERNEL-rt"
イメージで使用するカーネル名を定義
[customizations.kernel.name]
name = "KERNEL-NAME"
作成されたシステムイメージにタイムゾーンおよび Network Time Protocol (NTP) サーバーを設定
[customizations.timezone]
timezone = "TIMEZONE"
ntpservers = "NTP_SERVER"

タイムゾーンを設定しないと、システムはデフォルトとして Universal Time, Coordinated (UTC) を使用します。NTP サーバーの設定はオプションです。

作成されたシステムイメージのロケール設定
[customizations.locale]
languages = ["LANGUAGE"]
keyboard = "KEYBOARD"

言語とキーボードオプションの両方を設定する必要があります。他の多くの言語を追加できます。最初に追加する言語はプライマリー言語で、他の言語はセカンダリーになります。

作成されたシステムイメージのファイアウォールを設定
[customizations.firewall]
port = ["PORTS"]

リストを有効にするには、数値ポートまたは /etc/services ファイルの名前を使用できます。

ファイアウォールサービスのカスタマイズ

利用可能なファイアウォールサービスを確認します。

$ firewall-cmd --get-services

ブループリントの customizations.firewall.service セクションで、カスタマイズするファイアウォールサービスを指定します。

[customizations.firewall.services]
enabled = ["SERVICES"]
disabled = ["SERVICES"]

firewall.services にリストされているサービスは、/etc/services ファイルで使用可能なサービス名とは異なります。

注記

ファイアウォールサービスをカスタマイズしない場合は、ブループリントの [customizations.firewall] セクションおよび [customizations.firewall.services] セクションを省略します。

システムの起動時に有効にするサービスの設定
[customizations.services]
enabled = ["SERVICES"]
disabled = ["SERVICES"]

システムの起動時に有効にするサービスを制御することができます。一部のイメージタイプでは、イメージが正しく機能し、この設定を上書きできないようにするために、既にサービスが有効または無効になっています。Blueprint の [customizations.services] のカスタマイズはこれらのサービスを置き換えませんが、それらをイメージテンプレートにすでに存在しているサービスの一覧に追加します。

注記

ビルドが開始されるたびに、ホストシステムのリポジトリーのクローンが作成されます。大量の履歴を持つリポジトリーを参照すると、クローンに時間がかかり、大量のディスク領域が使用される場合があります。また、クローンは一時的なものであり、RPM パッケージの作成後にビルドによって削除されます。

カスタムファイルシステム設定を指定します。

ブループリントでカスタムファイルシステム設定を指定できるため、デフォルトのレイアウト設定ではなく、特定のディスクレイアウトでイメージを作成できます。ブループリントでデフォルト以外のレイアウト設定を使用すると、次の利点が得られます。

  • セキュリティーベンチマークコンプライアンス
  • ディスク外エラーに対する保護
  • 改良された性能
  • 既存の設定との一貫性

    ブループリントでファイルシステム設定をカスタマイズするには:

    [[customizations.filesystem]]
    mountpoint = "MOUNTPOINT"
    size = MINIMUM-PARTITION-SIZE

    ブループリントは、次の mountpoints とそのサブディレクトリーをサポートしています。

    • / - ルートマウントポイント
    • /var
    • /home
    • /opt
    • /srv/
    • /usr
    • /app
    • /data
    • /boot - RHEL 8.7 および RHEL 9.1 以降でサポートされています。

      注記

      マウントポイントのカスタマイズは、CLI を使用することで、RHEL 8.5 および RHEL 9.0 ディストリビューション以降でのみサポートされます。以前のディストリビューションでは、root パーティションをマウントポイントとして指定し、size 引数をイメージ size のエイリアスとして指定することしかできません。

      カスタマイズされたイメージに複数のパーティションがある場合、LVM でカスタマイズされたファイルシステムパーティションを使用してイメージを作成し、実行時にそれらのパーティションのサイズを変更できます。これを行うには、ブループリントでカスタマイズされたファイルシステム設定を指定して、目的のディスクレイアウトでイメージを作成します。デフォルトのファイルシステムレイアウトは変更されません。ファイルシステムをカスタマイズせずにプレーンイメージを使用すると、ルートパーティションは cloud-init によってサイズ変更されます。

      注記

      8.6 以降、osbuild-composer-46.1-1.el8 RPM 以降のバージョンでは、物理パーティションは利用できなくなり、ファイルシステムのカスタマイズで論理ボリュームが作成されます。

      ブループリントは、ファイルシステムのカスタマイズを LVM パーティションに自動的に変換します。

      MINIMUM-PARTITION-SIZE 値には、デフォルトのサイズ形式はありません。ブループリントのカスタマイズでは、kB から TB、および KiB から TiB の値と単位がサポートされています。たとえば、マウントポイントのサイズをバイト単位で定義できます。

      [[customizations.filesystem]]
      mountpoint = "/var"
      size = 1073741824

      単位を使用してマウントポイントのサイズを定義することもできます。

      注記

      マウントポイントのサイズは、RHEL 8.6 および RHEL 9.0 ディストリビューション以降に提供されているパッケージバージョンのユニットを使用してのみ定義できます。

      以下に例を示します。

      [[customizations.filesystem]]
      mountpoint = "/opt"
      size = "20 GiB"
      
      or
      
      [[customizations.filesystem]]
      mountpoint = "/boot"
      size = "1 GiB"

5.4. 関連情報

第6章 簡略化されたインストーラーイメージを構築して、RHEL for Edge image イメージをプロビジョニングします

デバイスへの無人インストール用に最適化された RHEL for Edge Simplified Installer イメージをビルドし、そのイメージを RHEL for Edge イメージにプロビジョニングできます。

6.1. 簡略化されたインストーラーイメージのビルドおよびデプロイ

新しいイメージタイプである edge-simplified-installer を使用して、RHEL for Edge Simplified Installer イメージをビルドします。

RHEL for Edge Simplified Installer イメージをビルドするには、既存の OSTree コミットを提供します。作成されるイメージには、OSTree コミットがデプロイされた生のイメージが含まれます。Simplified インストーラーの ISO イメージを起動すると、ハードディスクまたは仮想マシンのブートイメージとして使用できる RHEL for Edge システムがプロビジョニングされます。

RHEL for Edge Simplified Installer イメージは、デバイスへの無人インストール用に最適化されており、ネットワークベースのデプロイメントと非ネットワークベースのデプロイメントの両方をサポートします。ただし、ネットワークベースのデプロイメントでは、UEFI HTTP ブートのみをサポートします。

簡略化された RHEL for Edge イメージの作成およびデプロイには、次の高レベルの手順が含まれます。

  1. RHEL システムをインストールおよび登録する
  2. Image Builder のインストール
  3. Image Builder を使用して RHEL for Edge Container イメージのカスタムブループリントを作成する
  4. RHEL for Edge のブループリントを Image Builder にインポートする
  5. OSTree リポジトリーとしてコミットをデプロイする準備が整った Web サーバーで、OCI コンテナーに組み込む RHEL for Edge イメージを作成する
  6. edge-simplified-installer 用ブループリントを作成する
  7. 簡略化された RHEL for Edge を構築する
  8. RHEL for Edge の簡略化されたイメージのダウンロード
  9. virt-install を使用して生のイメージのインストール

次の図は、RHEL for Edge Simplified の構築およびプロビジョニングワークフローを表しています。

図6.1 ネットワークベース環境での RHEL for Edge の構築とプロビジョニング

RHEL for Edge の Simplified ワークフロー

6.2. Image Builder CLI を使用した Simplified イメージのブループリントの作成

簡略化された RHEL for Edge イメージのブループリントを作成するには、次の手順を実行します。

手順

  1. TOML (Tom's Obvious, Minimal Language) 形式で、以下のコンテンツのプレーンテキストファイルを作成します。

    name = "simplified-installer-blueprint"
    description = "blueprint for the simplified installer image"
    version = "0.0.1"
    packages = []
    modules = []
    groups = []
    distro = ""
    
    [customizations]
    installation_device = "/dev/vda"
    
    [customizations.fdo]
    manufacturing_server_url = "http://10.0.0.2:8080"
    diun_pub_key_insecure = "true"

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

    • name はブループリントの名前で、description は説明です。
    • 0.0.1 は、Semantic Versioning スキームに従って、バージョン番号に置き換えます。
    • モジュール は、イメージにインストールされるパッケージ名とそれに対応するバージョングロブを記述します (例: パッケージ名 = "tmux"、対応するバージョングロブのバージョン = "2.9a")。現在、パッケージとモジュールには違いがないことに注意してください。
    • グループ は、イメージにインストールされるパッケージグループです (例: グループパッケージ anaconda-tools)。モジュールとグループがわからない場合は、空のままにします。
    • installation-device は、デバイスへの無人インストールを有効にするためのカスタマイズです。
    • Manufacturing_server_url は、最初のデバイスクレデンシャルエクスチェンジを実行するための URL です。
  2. ブループリントを Image Builder サーバーにプッシュ (インポート) します。

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

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

    # composer-cli blueprints depsolve blueprint-name

6.3. Image Builder CLI を使用した RHEL for Edge Simplified Installer イメージの RHEL の作成

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

前提条件

手順

  1. 起動可能な ISO イメージを作成します。

    # composer-cli compose start-ostree \
    blueprint-name \
    edge-simplified-installer \
    --ref rhel/8/x86_64/edge \
    --url URL-OSTree-repository \

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

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

    # composer-cli compose status

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

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

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

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

    # composer-cli compose cancel <UUID>

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

    # composer-cli compose delete <UUID>

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

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>

    Image Builder は、コマンドを実行する現在のディレクトリーパスに .iso ファイルのイメージをダウンロードします。

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

    $ <UUID>-simplified-installer.iso: size MB

その結果、RHEL for Edge Simplified Installer ISO イメージをダウンロードしました。これをブート ISO として直接使用して、RHEL for Edge システムをインストールできます。

6.5. UEFI HTTP Boot サーバーのセットアップ

UEFI HTTP Boot サーバーを設定し、この UEFI HTTP Boot サーバーに接続してネットワーク経由で RHEL for Edge 仮想マシンのプロビジョニングを開始できるようにするには、以下の手順に従います。

前提条件

  • ISO 簡略化インストーラーイメージを作成している。
  • ISO コンテンツを提供する http サーバー。

手順

  1. 選択したディレクトリーに ISO イメージをマウントします。

    # mkdir /mnt/rhel8-install/
    # mount -o loop,ro -t iso9660 /path_directory/installer.iso /mnt/rhel8-install/

    /path_directory/installer.iso を RHEL for Edge 起動可能な ISO イメージへのパスに置き換えます。

  2. マウントされたイメージから HTTP サーバーのルートにファイルをコピーします。このコマンドにより、イメージに含まれるファイルが保存される /var/www/html/rhel8-install/ ディレクトリーを作成します。

    # cp -R /mnt/rhel8-install/* /var/www/html/
    # chmod -R +r /var/www/html/httpboot/*
    注記

    一部のコピー方法は、有効なインストールソースに必要な .treeinfo ファイルを省略できることに注意してください。この手順で示されているように、ディレクトリー全体に対して cp コマンドを実行しても、.treeinfo が正しくコピーされます。

  3. 以下を置き換えて、/var/www/html/EFI/BOOT/grub.cfg ファイルを更新します。

    1. coreos.inst.install_dev=/dev/sdacoreos.inst.install_dev=/dev/vda
    2. linux /images/pxeboot/vmlinuzlinuxefi /images/pxeboot/vmlinuz
    3. initrd /images/pxeboot/initrd.imginitrdefi /images/pxeboot/initrd.img
    4. coreos.inst.image_file=/run/media/iso/disk.img.xzcoreos.inst.image_url=http://{IP-ADDRESS}/disk.img.xz

      IP-ADDRESS は、このマシンの IP アドレスで、http ブートサーバーとして機能します。

  4. httpd サービスを起動します。

    # systemctl start httpd.service

    その結果、UEFI HTTP Boot サーバーをセットアップした後、UEFI HTTP ブートを使用して RHEL for Edge デバイスをインストールできます。

6.6. 簡略化された ISO イメージを仮想マシンにデプロイ

次のインストールソースを使用して RHEL for Edge の Simplified イメージを作成することにより、生成した RHEL for Edge ISO イメージをデプロイします。

  • UEFI HTTP Boot
  • virt-install

この例は、ネットワークベース のインストール用に ISO イメージから virt-install インストールソースを作成する方法を示しています。

前提条件

  • ISO イメージを作成している。
  • UEFI HTTP ブートをサポートするようにネットワーク設定をセットアップしている。

手順

  1. UEFI HTTP ブートをサポートするようにネットワーク設定をセットアップします。libvirt を使用した UEFI HTTP ブートのセットアップ を参照してください。
  2. virt-install コマンドを使用して、UEFI HTTP Boot から RHEL for Edge Virtual Machine を作成します。

    # virt-install \
        --name edge-install-image \
        --disk path=”  “, ,format=qcow2
        --ram 3072 \
        --memory 4096 \
        --vcpus 2 \
        --network network=integration,mac=mac_address \
        --os-type linux
        --os-variant rhel8 \
        --cdrom "/var/lib/libvirt/images/”ISO_FILENAME"
        --boot uefi,loader_ro=yes,loader_type=pflash,nvram_template=/usr/share/edk2/ovmf/OVMF_VARS.fd,loader_secure=no
        --virt-type kvm \
        --graphics none \
         --wait=-1
         --noreboot

コマンドを実行すると、仮想マシンのインストールが開始します。

検証

  • 作成した仮想マシンにログインします。

6.7. USB フラッシュドライブからの Simplified ISO イメージの展開

USB インストール を使用して RHEL for Edge Simplified イメージを作成して生成した RHEL for Edge ISO イメージをデプロイします。

この例は、ISO イメージから USB インストール ソースを作成する方法を示しています。

前提条件

  • ISO イメージである簡略化されたインストーラーイメージを作成しました。
  • 8 GB の USB フラッシュドライブがある。

手順

  1. ISO イメージファイルを USB フラッシュドライブにコピーします。
  2. USB フラッシュドライブを、起動するコンピューターのポートに接続します。
  3. USB フラッシュドライブから ISO イメージを起動します。起動メニューには、次のオプションが表示されます。

    Install Red Hat Enterprise Linux 8
    Test this media & install Red Hat Enterprise Linux 8
  4. Red Hat Enterprise Linux 8 のインストールを選択します。これにより、システムのインストールが開始します。

第7章 FDO を使用した Edge デバイスの RHEL の自動プロビジョニングとオンボーディング

RHEL for Edge Simplified Installer イメージをビルドし、それを RHEL for Edge イメージにプロビジョニングできます。FIDO デバイスオンボーディング (FDO) プロセスは、Edge デバイスを自動的にプロビジョニングしてオンボーディングし、ネットワークに接続されている他のデバイスやシステムとデータを交換します。

重要

Red Hat は、テクノロジープレビュー機能として FDO プロセスを提供し、安全なネットワークで実行する必要があります。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの テクノロジープレビュー機能のサポート範囲 を参照してください。

7.1. FIDO デバイスオンボーディング (FDO) プロセス

デバイスオンボーディングは、以下を行うプロセスです。

  • 物理デバイスをプロビジョニングし、オンボードします。
  • このデバイスの認証情報を自動的に設定します。
  • このデバイスがネットワーク上で安全に接続および対話できるようにします。

FIDO デバイスオンボーディング (FDO) を使用すると、IOT アーキテクチャーに新しいデバイスを追加して、セキュアなデバイスオンボーディングを実行できます。これには、信頼され、実行中の残りのシステムと統合され、すぐに使用できる新しいシステムをデプロイする必要がある特定のデバイス設定が含まれます。FDO 認証は、デバイスをセキュアにオンボードするために、新しいデバイスのインストールによってトリガーされる自動オンボーディングプロセスです。FDO プロトコルは、大規模なデバイスのセキュアなオンボードに必要な自動化とともに、信頼と所有権の連鎖を解決します。FIDO デバイスオンボーディング (FDO) は、製造段階でデバイスの初期化を実行し、実際に使用するためにデバイスのバインドを遅らせます。これは、デバイスの管理システムへの実際のバインドは、デバイスの手動設定を必要とせずに、デバイスの最初の起動時に行われることを意味します。FDO プロトコルを使用することで、自動化されたセキュアなデバイスオンボーディング、つまり、エッジロケーションに専門の担当者を必要としないゼロタッチインストールとオンボーディングがサポートされます。オンボーディングが完了すると、そのデバイスに接続し、パッチの適用、更新、ロールバックを行えます。

FDO を使用すると、次の利点が得られます。

  • FDO は、デバイスを管理プラットフォームに登録するための安全で簡単な方法です。キックスタート設定をイメージに埋め込む代わりに、FDO は、機密データを認証情報、キー、または証明書として ISO イメージに直接含めるなどのカスタマイズを適用します。
  • FDO は、デバイスへのレイトバインディングの問題を解決し、安全な FDO チャネルを介して機密データを共有できるようにします。
  • FDO は、設定やその他のシークレットを登録してシステムに渡す前に、システムの ID と所有権を暗号で識別します。これにより、技術者以外のユーザーがシステムの電源を入れることができます。

RHEL for Edge の Simplified Installer イメージをビルドして自動的にオンボードするには、既存の OSTree コミットを提供します。作成されるイメージには、OSTree コミットがデプロイされた生のイメージが含まれます。Simplified インストーラーの ISO イメージを起動すると、ハードディスクまたは仮想マシンのブートイメージとして使用できる RHEL for Edge システムがプロビジョニングされます。

RHEL for Edge Simplified Installer イメージは、デバイスへの無人インストール用に最適化されており、ネットワークベースのデプロイメントと非ネットワークベースのデプロイメントの両方をサポートします。ただし、ネットワークベースのデプロイメントでは、UEFI HTTP ブートのみをサポートします。

FDO プロトコルは、次のサーバーに基づいています。

  • 製造サーバー

    このサーバーは、製造元サーバーのロケーションにあります。製造サーバー:

    1. デバイスに署名します。
    2. プロセスの後半で、デバイスの所有権を設定するために使用されるバウチャーを作成します。
    3. デバイスを特定の管理プラットフォームにバインドします。
  • ランデブーサーバー

    このサーバーは、所有者サーバーのロケーション、またはデバイス管理システムが配置されるプラットフォーム (クラウドなど) にあります。ランデブーサーバー:

    1. 最初のデバイス起動時に製造サーバーによって生成されたバウチャーを取得します。
    2. デバイスの UUID をターゲットプラットフォームと照合し、このデバイスが使用する必要のある所有者サーバーエンドポイントに関する情報をデバイスに提供します。
  • 所有者管理サーバー

    このサーバーは、所有者サーバーのロケーション、またはデバイスがデプロイされるプラットフォームにあります。所有者管理サーバー:

    1. デバイス認証後に、デバイスと所有者サーバーの間にセキュアなチャネルを作成します。
    2. セキュアなチャネルを使用して、オンボーディングの自動化に必要なファイルやスクリプトなどの情報をデバイスに送信します。
  • デバイスクライアント

    デバイスにインストールされているサーバーです。デバイスクライアントは以下を行います。

    1. オンボーディングの自動化が実行される複数のサーバーへのクエリーを開始します。
    2. TCP/IP プロトコルを使用してサーバーと通信します。

次の図は、FIDO デバイスのオンボーディングワークフローを表しています。

図7.1 非ネットワーク環境での RHEL for Edge のデプロイ

FDO デバイスのオンボーディング

製造元サーバー で、デバイスは FDO 認証情報、オペレーティングシステムにインストールされる一連の証明書とキー、およびランデブーサーバーエンドポイント (URL) を取得します。また、所有者の割り当てを変更する必要がある場合に備えて、個別に保持される所有権バウチャーも取得します。

  1. デバイスクライアントはデバイス認証情報を読み込みます。
  2. デバイスクライアントがネットワークに接続します。
  3. 早い段階で、所有者管理システムは、所有者管理システムの場所についてメーカーのランデブーサーバーに通知します。
  4. ネットワークに接続した後、デバイスクライアントはランデブーサーバーに接続します。
  5. ランデブーサーバーは、所有者のエンドポイント URL をデバイスクライアントに送信し、デバイスを登録します。このアクションにより、デバイスが接続され、起動します。
  6. デバイスクライアントは、ランデブーサーバーによって共有される所有者管理システムに接続し、デバイスキーを使用してステートメントに署名することで、正しいデバイスであることを証明します。
  7. 所有者管理システムは、所有者バウチャーの最後のキーを使用してステートメントに署名することにより、それ自体を証明します。
  8. 所有者管理システムは、デバイスクライアントの設定を提供します。これは、デバイスがたとえば SSH キーに保存します。
  9. デバイスクライアントは、所有権バウチャーを受け取り、確認します。
  10. 次に、デバイスクライアントがデバイスの認証情報を取得します。
  11. その後、所有者管理システムはデバイスクライアントをオンボード済みとして報告します。

    FDO プロセス全体が完了し、このデバイスでは使用されなくなりました。

7.2. RHEL for Edge デバイス用の自動プロビジョニングとオンボーディング

RHEL for Edge デバイスの自動プロビジョニングとオンボーディングには、次の高レベルの手順が含まれます。

  1. RHEL システムをインストールおよび登録する
  2. Image Builder のインストール
  3. Image Builder を使用して RHEL for Edge Container イメージのカスタムブループリントを作成する
  4. RHEL for Edge のブループリントを Image Builder にインポートする
  5. OSTree リポジトリーとしてコミットをデプロイする準備が整った Web サーバーで、OCI コンテナーに組み込む RHEL for Edge イメージを作成する
  6. ストレージデバイスパスのカスタマイズと FDO のカスタマイズを使用して、edge-simplified-installer のブループリントを作成します。

    name = "fdo"
    description = "FDO blueprint"
    version = "0.0.1"
    packages = []
    modules = []
    groups = []
    distro = ""
    
    [customizations]
    installation_device = "/dev/vda"
    
    [customizations.fdo]
    manufacturing_server_url = "http://10.0.0.2:8080"
    diun_pub_key_insecure = "true"
  7. RHEL for Edge イメージ用の簡略化されたインストーラー RHEL を構築します。
  8. RHEL for Edge の簡略化されたインストーラーイメージをダウンロードします。
  9. 簡易インストーラ ISO イメージをデバイスにインストールします。FIDO FDO クライアントは Simplified Installer ISO で実行され、UEFI ディレクトリー構造によりイメージが起動可能になります。
  10. ネットワーク設定により、デバイスは製造サーバーに接続して、最初のデバイス認証情報の交換を実行できます。
  11. システムがエンドポイントに到達すると、デバイスに対してデバイスの認証情報が作成されます。
  12. オンボードサーバーは、デバイスクレデンシャルを使用して、オンボードサーバーに対して認証を行います。オンボーディングサーバーは、設定をデバイス/システムに渡します。システムに接続した後、オンボーディングサーバーに接続し、設定を受け取ります。
  13. オンボーディングサーバーはデバイスに SSH キーを提供し、システムをインストールします。
  14. 次に、システムを再起動し、TPM に保存されている強力なキーで暗号化します。
  15. 作成したブループリントの認証情報を使用してシステムにログインし、Simplified Installer ISO イメージに作成された設定を確認できます。

7.3. キーおよび証明書の生成

FIDO デバイスオンボーディング (FDO) インフラストラクチャーを実行するには、キーと証明書を生成する必要があります。FDO はこれらのキーと証明書を生成して、製造サーバーを設定します。サービスをインストールすると、FDO によって証明書と .yaml 設定ファイルが自動的に生成されます。再作成はオプションです。サービスをインストールして開始すると、デフォルト設定で実行されます。

重要

Red Hat は、テクノロジープレビュー機能として fdo-admin-tool generate-key-and-cert ツールを提供し、安全なネットワークで実行する必要があります。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの テクノロジープレビュー機能のサポート範囲 を参照してください。

前提条件

  • fdo-admin-cli RPM パッケージをインストールしました

手順

  1. キーと証明書用のディレクトリーを作成します。

    $ mkdir /etc/fdo/keys
  2. 作成したディレクトリーにキーと証明書を生成します。

    $ for i in "diun" "manufacturer" "device_ca" "owner"; do fdo-admin-tool generate-key-and-cert $i; done
    $ ls keys
    device_ca_cert.pem device_ca_key.der diun_cert.pem diun_key.der manufacturer_cert.pem manufacturer_key.der owner_cert.pem owner_key.der
    注記

    ソースコードを使用してコンパイルした場合、ビルドオプションに応じて、正しいパスは ./target/debug/fdo-admin-tool または ./target/debug/fdo-admin-tool になります。

  3. 作成されたキーおよび証明書を確認します。

    $ tree keys

    次の出力が表示されます。

    – device_ca_cert.pem
    – device_ca_key.der
    – diun_cert.pem
    – diun_key.dre
    – manufacturer_cert.pem
    – manufacturer_key.der
    – owner_cert.pem
    – owner_key.pem

関連情報

  • fdo-admin-tool generate-key-and-cert –help

7.4. 製造サーバーパッケージのインストール

manufacturing server の RPM パッケージは、デバイスを安全にオンボードするための認証情報を提供します。デバイスのインストール中に、製造サーバーは Rendezvous サーバーに対して、サーバーに対するデバイス認証情報の認証を提供し、インストールされたシステムにデバイスク認証情報をインストールするように要求します。

重要

Red Hat は、テクノロジープレビュー機能として fdo-manufacturing-server ツールを提供し、安全なネットワークで実行する必要があります。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの テクノロジープレビュー機能のサポート範囲 を参照してください。

manufacturing server の RPM パッケージをインストールするには、次の手順を実行します。

手順

  1. fdo-admin-cli パッケージをインストールします。

    # yum install -y fdo-admin-cli
  2. manufacturing server RPM パッケージをインストールします。

    # yum install fdo-manufacturing-server --refresh
  3. ファイルが正しくインストールされたかどうかを確認します。

    $ ls /usr/share/doc/fdo

    次の出力が表示されます。

    Output:
    manufacturing server.yml
    Owner-onboarding-server.yml
    rendezvous-server.yml
  4. オプション: 各ファイルの内容を確認します。次に例を示します。

    $ cat /usr/share/doc/fdo/manufacturing-server.yml
  5. 製造サーバーを設定します。以下を提供する必要があります。

    • 製造サーバーの URL
    • ランデブーサーバーの IP アドレスまたは DNS 名
    • 生成したキーおよび証明書へのパス。キーおよび証明書の生成のセクションを参照してください。
  6. RHEL for Edge ネットワークの簡易イメージをデバイスにインストールした後、製造元のサーバーが Podman コンテナーで実行していることを確認します。製造サーバーは、新しいデバイスでのデバイス認証情報の作成および有効化を処理します。

    $ cat /usr/share/doc/fdo/manufacturing-server.yml

7.5. FDO 認証を使用して RHEL for Edge デバイスを自動的にオンボーディング

RHEL for Edge デバイスを自動的にオンボードするようにデバイスを準備するには、次の手順を実行します。

前提条件

  • OStree コンテナーを作成して提供しました。
  • デバイスの組み立ておよびプロビジョニング。この例では VM マシンを使用していますが、実際のデバイスで使用できます。
  • UEFI HTTP Boot サーバーを実行しています。
  • fdo-manufacturing-server RPM パッケージをインストールしました。以下を実行します。

    # yum install -y fdo-admin-cli

手順

  1. ISO Simplified イメージを使用してインストールを実行します。たとえば、CD-ROM または USB フラッシュドライブからインストールできます。

    インストールでは、ISO Simplified Installer イメージが実行され、FDO クライアントが実行され、UEFI ディレクトリー構造によってイメージが起動可能になり、生のイメージが ISO に書き込まれます。

  2. ターミナルを介して、デバイスが製造サービスに到達し、最初のデバイス認証情報交換を実行し、所有権バウチャーを作成したことを確認します。

    $ ls directory-path/ownership_voucher/

    出力には、ownership_voucher ID が表示され、正しいデバイス認証情報がデバイスに追加されたことを示す必要があります。

    オンボーディングサーバーは、デバイス認証情報を使用して、オンボーディングサーバーに対して認証を行います。次に、設定をデバイスに渡します。デバイスはオンボーディングサーバーから設定を受け取った後、SSH キーを受け取り受信、デバイスにオペレーティングシステムをインストールします。最後に、システムは自動的に再起動し、TPM に保存されている強力なキーで暗号化します。

    デバイスが自動的に再起動した後、デバイスはオンボーディングサーバーに接続してオンボーディングされ、ユーザー認証情報は FDO によって自動的にプロビジョニングされます。

検証

デバイスが自動的に再起動した後、ブループリント用に作成した認証情報を使用してデバイスにログインできます。

  1. ブループリント用に作成したユーザー名とパスワードを入力して、デバイスにログインします。
  2. オプション: 生のイメージに作成された設定を確認します。

第8章 ネットワークベース環境での RHEL for Edge イメージのデプロイメント

RHEL インストーラーのグラフィカルユーザーインターフェイスまたはキックスタートファイルを使用して、RHEL for Edge イメージをデプロイできます。RHEL for Edge イメージをデプロイする全体的なプロセスは、デプロイメント環境がネットワークベースであるかそうでないかによって異なります。

注記

ベアメタルにイメージをデプロイするには、キックスタートファイルを使用します。

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

ネットワークベースの環境に RHEL for Edge イメージをデプロイするには、以下の概要手順を実施します。

  1. イメージファイルのコンテンツを展開する。
  2. Web サーバーを設定する
  3. イメージをインストールする。

8.1. RHEL for Edge イメージのコミットの展開

コミットをダウンロードしたら、.tar ファイルを展開して ref 名とコミット ID をメモします。

ダウンロードしたコミットファイルは、OSTree リポジトリーが含まれる .tar ファイルで設定されています。OSTree リポジトリーには、コミットおよび compose.json ファイルがあります。

compose.json ファイルには、「Ref」(参照 ID およびコミット ID) などの情報や、コミットに関する情報メタデータが含まれます。コミット ID には RPM パッケージがあります。

パッケージのコンテンツを展開するには、以下の手順を実行します。

前提条件

  • キックスタートファイルを作成するか、既存のファイルを使用する。

手順

  1. ダウンロードしたイメージの .tar ファイルを展開します。

    # tar xvf <UUID>-commit.tar
  2. .tar ファイルを展開したディレクトリーに移動します。

    これには、compose.json ファイルおよび OSTree ディレクトリーがあります。compose.json ファイルにはコミット番号があり、OSTree ディレクトリーには RPM パッケージがあります。

  3. compose.json ファイルを開き、コミット ID 番号を書き留めます。Web サーバーの設定を進める際には、この番号が必要になります。

    jq JSON プロセッサーがインストールされている場合は、jq ツールを使用してコミット ID を取得することもできます。

    # jq '.["ostree-commit"]' < compose.json
  4. コミットの RPM パッケージを一覧表示します。

    # rpm-ostree db list rhel/8/x86_64/edge --repo=repo
  5. キックスタートファイルを使用して RHEL インストーラーを実行します。必要に応じて、既存のファイルを使用するか、Kickstart Generator ツールを使用して作成できます。

    キックスタートファイルに、ファイルシステムのプロビジョニング、ユーザーの作成、RHEL for Edge イメージの取得およびデプロイの方法の詳細を含めるようにしてください。RHEL インストーラーは、インストールプロセス中にこの情報を使用します。

    以下は、キックスタートファイルの例です。

    lang en_US.UTF-8
    keyboard us
    timezone Etc/UTC --isUtc
    text
    zerombr
    clearpart --all --initlabel
    autopart
    reboot
    user --name=core --group=wheel
    sshkey --username=core "ssh-rsa AAAA3Nza…​."
    rootpw --lock
    network --bootproto=dhcp
    
    ostreesetup --nogpg --osname=rhel --remote=edge --url=https://mirror.example.com/repo/ --ref=rhel/8/x86_64/edge

    OStree ベースのインストールでは、ostreesetup コマンドを使用して設定をセットアップします。OSTree のコミットを、以下のフラグを使って取得します。

    • --nogpg - GNU Privacy Guard (GPG) キー検証を無効にします。
    • --osname - オペレーティングシステムのインストールの管理ルート。
    • --remote - オペレーティングシステムのインストールの管理ルート。
    • --url - インストール元となるリポジトリーの URL
    • --ref - インストールが使用するリポジトリーからのブランチの名前。
    • --url=https://mirror.example.com/repo/ - エッジコミットを抽出して nginx で提供したホストシステムのアドレスこのアドレスを使って、ゲストコンピューターからホストシステムにアクセスすることができます。

      たとえば、/var/www/html ディレクトリーにコミットイメージを抽出し、ホスト名がwww.example.com のコンピューターで nginx を介してコミットを提供する場合、--url パラメーターの値は http://www.example.com/repo となります。

      注記

      Apache HTTP Server では https が有効になっていないため、http プロトコルを使用してサービスを開始し、コミットを提供します。

8.2. RHEL for Edge イメージをインストールするための Web サーバーの設定

RHEL for Edge イメージのコンテンツを展開したら、HTTP を使用して RHEL インストーラーにイメージのコミット詳細を提供するための Web サーバーを設定します。

以下の例では、コンテナーを使用して Web サーバーを設定する手順を説明します。

前提条件

手順

  1. 以下の手順に従って、nginx 設定ファイルを作成します。

    events {
    
    }
    
    http {
        server{
            listen 8080;
            root /usr/share/nginx/html;
                    }
             }
    
    pid /run/nginx.pid;
    daemon off;
  2. 以下の手順で Dockerfile を作成します。

    FROM registry.access.redhat.com/ubi8/ubi
    RUN yum -y install nginx && yum clean all
    COPY kickstart.ks /usr/share/nginx/html/
    COPY repo /usr/share/nginx/html/
    COPY nginx /etc/nginx.conf
    EXPOSE 8080
    CMD ["/usr/sbin/nginx", "-c", "/etc/nginx.conf"]
    ARG commit
    ADD ${commit} /usr/share/nginx/html/

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

    • kickstart.ks は、RHEL for Edge イメージのキックスタートファイルの名前です。キックスタートファイルには、ディレクティブの情報が含まれています。後でイメージを管理しやすくするためにも、Greenboot チェックのチェックおよび設定を含むことが推奨されます。そのためには、以下の設定を含むようにキックスタートファイルを更新します。

      lang en_US.UTF-8
      keyboard us
      timezone Etc/UTC --isUtc
      text
      zerombr
      clearpart --all --initlabel
      autopart
      reboot
      user --name=core --group=wheel
      sshkey --username=core "ssh-rsa AAAA3Nza…​."
      
      ostreesetup --nogpg --osname=rhel --remote=edge
      --url=https://mirror.example.com/repo/
      --ref=rhel/8/x86_64/edge
      
      %post
      cat << EOF > /etc/greenboot/check/required.d/check-dns.sh
      #!/bin/bash
      
      DNS_SERVER=$(grep nameserver /etc/resolv.conf | cut -f2 -d" ")
      COUNT=0
      
      # check DNS server is available
      ping -c1 $DNS_SERVER
      while [ $? != '0' ] && [ $COUNT -lt 10 ]; do
      
      							
      							
      							
      							COUNT++
      echo "Checking for DNS: Attempt $COUNT ."
      sleep 10
      ping -c 1 $DNS_SERVER
      done
      EOF
      %end

      任意の HTTP サービスで OSTree リポジトリーをホストできます。コンテナーを使用する例は、これを行う方法のオプションにすぎません。Dockerfile は次のタスクを実行します。

      1. 最新の Universal Base Image (UBI) の使用
      2. Web サーバー (nginx) をインストールします。
      3. キックスタートファイルのサーバーへの追加
      4. RHEL for Edge イメージのコミットのサーバーへの追加
  3. Docker コンテナーをビルドします。

    # podman build -t name-of-container-image --build-arg commit=uuid-commit.tar .
  4. コンテナーを実行します。

    # podman run --rm -d -p port:8080 localhost/name-of-container-image

    これにより、サーバーがセットアップされ、commit.tar リポジトリーとキックスタートファイルを使用して、RHEL インストーラーを起動する準備が整いました。

8.3. RHEL Boot.iso イメージのダウンロード

Red Hat Boot ISO イメージは、Red Hat カスタマーポータルからダウンロードできます。Red Hat Boot ISO イメージは、RHEL インストーラーの起動に使用されます。インストーラーは、RHEL for Edge イメージをインストールするために提供されたキックスタートファイルを取得します。

前提条件

  • アクティブな Red Hat サブスクリプションがある。
  • Red Hat カスタマーポータルの 製品のダウンロード セクションにログインしている。

手順

  1. ブラウザーを開き、https://access.redhat.com/downloads にアクセスします。
  2. インフラストラクチャー管理で、Red Hat Enterprise Linux 8 製品をクリックします。
  3. Red Hat Enterprise Linux 8 Boot ISO オプションの場合は、Download Now ボタンをクリックします。

8.4. キックスタートファイルを使用した RHEL for Edge イメージのインストール

Kickstart ファイルを使用する RHEL for Edge イメージをインストールするには、Web サーバーを使用します。Web サーバーは、RHEL for Edge イメージの commit.tar リポジトリーとキックスタートファイルを使用して、RHEL インストーラーを起動します。

前提条件

手順

  1. libvirt virt-install を使用して RHEL Anaconda インストーラーを実行します。

    virt-install \
    --name rhel-edge-test-1 \
    --memory 2048 \
    --vcpus 2 \
    --disk path=prepared_disk_image.qcow2,format=qcow2,size=8 \
    --os-variant rhel8 \
    --cdrom /home/username/Downloads/rhel-8-x86_64-boot.iso
  2. インストール画面で:

    図8.1 Red Hat Enterprise Linux 起動メニュー

    Red Hat Enterprise Linux 起動メニュー
    1. e キーを押して、追加のカーネルパラメーターを追加します。

      inst.ks=http://edge_device_ip:port/kickstart.ks

      カーネルパラメーターは、RHEL インストーラーに含まれる RHEL イメージではなく、キックスタートファイルを使用して RHEL をインストールすることを指定します。

    2. カーネルパラメーターを追加したら、Ctrl+X を押して、キックスタートファイルを使用して RHEL インストールを起動します。

      RHEL インストーラーが起動し、サーバー (HTTP) エンドポイントからキックスタートファイルを取得してコマンドを実行します。このコマンドには、HTTP エンドポイントから RHEL for Edge イメージコミットをインストールするコマンドが含まれます。インストールが完了すると、RHEL インストーラーからログインの詳細を求められます。

検証

  1. ログイン 画面で、ユーザーアカウントの資格情報を入力し、Enter をクリックします。
  2. RHEL for Edge イメージが正常にインストールされているかどうかを確認します。

    $ rpm-ostree status

    コマンドの出力には、イメージのコミット ID が表示され、正常にインストールされたことがわかります。

    以下は出力例です。

    State: idle
    Deployments:
    * ostree://edge:rhel/8/x86_64/edge
    		  Timestamp: 2020-09-18T20:06:54Z
    			Commit: 836e637095554e0b634a0a48ea05c75280519dd6576a392635e6fa7d4d5e96

第9章 非ネットワークベース環境での RHEL for Edge イメージのデプロイメント

RHEL for Edge Container (.tar) を RHEL for Edge Installer (.iso) イメージタイプと組み合わせると、ISO イメージになります。ISO イメージは、デバイスへのイメージのデプロイメント中に切断された環境で使用できます。ただし、ネットワークアクセスでは、さまざまなアーティファクトを構築するためにネットワークアクセスが必要になる場合があります。

ネットワークベース以外の環境に RHEL for Edge イメージをデプロイするには、以下の概要手順を実施します。

  1. RHEL for Edge Container をダウンロードします。RHEL for Edge イメージをダウンロードする方法は、RHEL for Edge イメージのダウンロード を参照してください。
  2. RHEL for Edge コンテナーイメージを Podman にロードする。
  3. RHEL for Edge コンテナーイメージを Podman で実行する。
  4. RHEL for Edge インストーラーブループリントをロードする
  5. RHEL for Edge Installer イメージをビルドする。
  6. .qcow2 ディスクを準備する
  7. 仮想マシンを起動する。
  8. イメージをインストールする。

9.1. ネットワークベース以外のデプロイメント用の RHEL for Edge コンテナーイメージの作成

ダウンロードした RHEL for Edge Container OSTree コミットを Podman にロードすることで、実行中のコンテナーを構築できます。そのためには、以下の手順に従います。

前提条件

  • RHEL for Edge Container OSTree コミットを作成してダウンロードしました。
  • システムに Podman をインストール済みである。How do I install Podman in RHEL を参照してください。

手順

  1. RHEL for Edge Container OSTree コミットをダウンロードしたディレクトリーに移動します。
  2. RHEL for Edge Container OSTree コミットを Podman にロードします。

    $ sudo podman load -i UUID-container.tar

    コマンド出力にはイメージ ID が提供されます (例: @8e0d51f061ff1a51d157804362bc875b649b27f2ae1e66566a15e7e6530cec63)。

  3. 前のステップで生成したイメージ ID を使用して、新しい RHEL for Edge コンテナーイメージにタグ付けします。

    $ sudo podman tag image-ID localhost/edge-container

    podman tag コマンドは、ローカルイメージに別の名前を割り当てます。

  4. edge-container という名前のコンテナーを実行します。

    $ sudo podman run -d --name=edge-container -p 8080:8080 localhost/edge-container

    podman run -d --name=edge-container コマンドは、localhost/edge-container イメージに基づいて、コンテナーに名前を割り当てます。

  5. コンテナーを一覧表示します。

    $ sudo podman ps -a
    CONTAINER ID  IMAGE                               	COMMAND	CREATED    	STATUS                	PORTS   NAMES
    2988198c4c4b  …./localhost/edge-container   /bin/bash  3 seconds ago  Up 2 seconds ago      	edge-container

その結果、Podman はコンテナーを実行し、RHEL for Edge Container コミットの OSTree リポジトリーを提供します。

9.2. ネットワークベース以外のデプロイメント用の RHEL for Edge インストーラーイメージの作成

実行中のコンテナーをビルドして、RHEL for Edge Container コミットでリポジトリーを提供してから、RHEL for Edge Installer (.iso) イメージを作成します。RHEL for Edge Installer (.iso) は、RHEL for Edge Container (.tar) が提供するコミットをプルします。RHEL for Edge Container コミットが Podman に読み込まれると、OSTree が URL 形式で公開されます。

CLI で RHEL for Edge Installer イメージを作成するには、以下の手順に従います。

前提条件

  • RHEL for Edge イメージのブループリントを作成しました。
  • RHEL for Edge Container イメージを作成し、Web サーバーを使用してデプロイしている。

手順

  1. RHEL for Edge Installer インストーラーイメージの作成を開始します。

    # composer-cli compose start-ostree --ref rhel/8/x86_64/edge --url URL-OSTree-repository blueprint-name image-type

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

    • ref は、お客様が ostree リポジトリーの構築に使用した値と同じです。
    • URL-OSTree-repository は、イメージに埋め込むコミットの OSTree リポジトリーへの URL です。例: http://10.0.2.2:8080/repository/ネットワークベース以外のデプロイメント用の RHEL for Edge コンテナーイメージの作成 を参照してください。
    • blueprint-name は、RHEL for Edge Installer のブループリント名です。
    • image-typeedge-installer です。

      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>

    Image Builder は、イメージのビルド時に、実行中のコンテナーが提供するコミットをプルします。

    イメージのビルドが完了したら、作成された ISO イメージをダウンロードできます。

  3. イメージをダウンロードしてください。RHEL for Edge イメージのダウンロード を参照してください。

    イメージの準備ができたら、ネットワーク以外のデプロイメント に使用できます。ネットワークベース以外のデプロイメント向けの RHEL for Edge イメージのインストール を参照してください。

9.3. ネットワークベース以外のデプロイメント向けの RHEL for Edge イメージのインストール

RHEL for Edge イメージをインストールするには、以下の手順に従います。

前提条件

  • RHEL for Edge Installer ISO イメージを作成しました。
  • 実行中のコンテナーを停止している。
  • 作成したコミットをインストールするためのディスクイメージ。
  • edk2-ovmf パッケージをインストールしました。
  • virt-viewer パッケージをインストールしました。
  • ユーザーアカウントを使用してブループリントをカスタマイズしました。See RHEL for Edge イメージのブループリントの管理ユーザーアカウントの作成.

    警告

    ブループリントでユーザーアカウントのカスタマイズを定義しないと、ISO イメージにログインできません。

手順

  1. (.iso) イメージをインストールするための qcow VM ディスクファイルを作成します。これは、仮想マシン用のハードドライブのイメージです。以下に例を示します。

    $ qemu-img create -f qcow2 diskfile.qcow2 20G
  2. virt-install コマンドを使用して、ディスクをドライブとして使用し、インストーラー ISO を CD-ROM として使用して VM を起動します。以下に例を示します。

    $ virt-install \
    --boot uefi \
    --name VM_NAME
    --memory 2048 \
    --vcpus 2 \
    --disk path=diskfile.qcow2
    --cdrom /var/lib/libvirt/images/UUID-installer.iso \
    --os-variant rhel9.0

    このコマンドは、virt-install に次のように指示します。

    • BIOS の代わりに UEFI を使用して起動するよう仮想マシンに指示します。
    • インストール ISO をマウントします。
    • 最初の手順で作成したハードドライブイメージを使用します。

      Anaconda インストーラーを指定します。RHEL インストーラーが起動し、ISO からキックスタートファイルを読み込み、RHEL for Edge イメージのコミットのインストールなど、コマンドを実行します。インストールが完了すると、インストーラーはログインの詳細を要求します。

      注記

      Anaconda は、インストール時にコンテナーコミットを使用するように事前設定されています。ただし、ディスクパーティション、タイムゾーンなどのシステム設定を設定する必要があります。

  3. virt-viewer を使用して Anaconda GUI に接続し、システム設定をセットアップします。

    $ virt-viewer --connect qemu:///system --wait VM_NAME
  4. システムを再起動して、インストールを完了します。
  5. ログイン画面で、ユーザーアカウントの認証情報を指定し、Enter をクリックします。

検証手順

  1. RHEL for Edge イメージが正常にインストールされているかどうかを確認します。

    $  rpm-ostree status

コマンドの出力には、イメージのコミット ID が表示され、正常にインストールされたことがわかります。

第10章 RHEL for Edge イメージの管理

RHEL for Edge イメージを管理するために、以下のいずれかの管理タスクを実行することができます。

  • RHEL Web コンソールで Image Builder を使用した RHEL for Edge イメージのブループリントの編集
  • Image Builder コマンドラインを使用した RHEL for Edge イメージのブループリントの編集
  • RHEL for Edge イメージの更新
  • rpm-ostree リモートをノードに設定/ノードポリシーの更新
  • RHEL for Edge イメージの手動での復元、または Greenboot を使用した自動的な復元

10.1. RHEL Web コンソールで Image Builder を使用した RHEL for Edge イメージのブループリントの編集

RHEL for Edge イメージのブループリントを編集して、以下を実行することができます。

  • 必要に応じた追加コンポーネントの追加
  • 既存コンポーネントのバージョンの変更
  • 既存コンポーネントの削除

10.1.1. RHEL Web コンソールで Image Builder を使用した RHEL for Edge イメージのブループリントへのコンポーネントの追加

RHEL for Edge イメージのブループリントにコンポーネントを追加するには、以下の前提条件を満たしていることを確認してから、対応するブループリントを編集する手順に従ってください。

前提条件

  • RHEL システムで、Image Builder ダッシュボードにアクセス済みである。
  • RHEL for Edge イメージのブループリントを作成済みである。

手順

  1. Image Builder のダッシュボードで、編集したい RHEL for Edge イメージのブループリントをクリックします。

    特定のブループリントを検索するには、Filter by Name のテキストボックスにブループリント名を入力してから Enter キーを押します。

  2. ブループリントの右上で、Edit Packages をクリックします。

    画面が Edit Packages モードに切り替わります。

  3. Filter by Name のテキストボックスに、追加するコンポーネント名を入力してから Enter キーを押します。

    コンポーネント名の一覧が表示されます。

  4. コンポーネントの横の + 記号をクリックします。

    ブループリントにコンポーネントが追加されます。

  5. Commit をクリックします。

    ブループリントの更新が保存され、保留中のコミットと共にメッセージが表示されます。

  6. サマリーダイアログボックスで、変更内容を確認してから Commit をクリックします。

    コミットが正常に実行されたことを確認するメッセージが表示されます。

    これにより、新しいバージョンのブループリントが作成され、右ペインに最新のコンポーネントが一覧表示されます。

10.1.2. RHEL Web コンソールを使用した RHEL for Edge イメージのブループリント内の既存コンポーネントのバージョンの変更

デフォルト (最新) のバージョンを選択したか、あるいはブループリントに含めたコンポーネントのバージョンを選択しました。必要に応じて、任意のコンポーネントのバージョンを変更できるようになりました。

そのためには、以下の前提条件を満たしていることを確認してから、対応するブループリントのコンポーネントのバージョンを変更する手順に従ってください。

前提条件

  • RHEL システムで、Image Builder ダッシュボードにアクセス済みである。
  • RHEL for Edge イメージのブループリントを作成済みである。
  • RHEL for Edge のブループリントに 1 つ以上のコンポーネントを追加済みである。

手順

  1. Image Builder のダッシュボードで、編集するブループリントをクリックします。

    特定のブループリントを検索するには、Filter by Name のテキストボックスにブループリント名を入力してから Enter キーを押します。

  2. ブループリントの右上で、Edit Packages をクリックします。

    画面が Edit Packages モードに切り替わり、右側のパネルには、現在ブループリントにコミットされているコンポーネント名が一覧表示されます。

  3. コンポーネント名をクリックします。
  4. Component Options Version のドロップダウンリストから希望のバージョンを選択します。
  5. Apply Changes をクリックします。

    変更が保存され、右ペインには最新の変更が一覧表示されます。

  6. Commit をクリックします。

    新しいバージョンはブループリントに保存されています。保留中のコミットを示すメッセージが表示されます。

  7. サマリーダイアログボックスで、変更内容を確認してから Commit をクリックします。

    コミットが正常に実行されたことを確認するメッセージが表示されます。

    その結果、ブループリントの新しいバージョンが作成され、右側のペインには最新のコンポーネントが表示されます。

10.1.3. RHEL Web コンソールで Image Builder を使用した RHEL for Edge イメージのブループリントからのコンポーネントの削除

作成した RHEL for Edge イメージのブループリントから不要なコンポーネントを 1 つ以上削除するには、以下の前提条件を満たしていることを確認してから、手順に従ってください。

前提条件

  • RHEL システムで、Image Builder ダッシュボードにアクセス済みである。
  • RHEL for Edge イメージのブループリントを作成済みである。
  • RHEL for Edge のブループリントに 1 つ以上のコンポーネントを追加済みである。

手順

  1. Image Builder のダッシュボードで、編集するブループリントをクリックします。

    特定のブループリントを検索するには、Filter by Name のテキストボックスにブループリント名を入力してから Enter キーを押します。

  2. ブループリントの右上で、Edit Packages をクリックします。

    画面が Edit Packages モードに切り替わります。右側のパネルには、現在ブループリントにコミットされているコンポーネント名が一覧表示されます。

  3. More Options メニューの Remove をクリックします。

    オプションで、コンポーネント名をクリックしてから Remove をクリックします。

  4. Commit をクリックします。

    保留中のコミットを示すメッセージが表示されます。

  5. 変更内容を確認してから、Commit をクリックします。

    コミットが正常に実行されたことを確認するメッセージが表示されます。

    これにより、新しいバージョンのブループリントが作成され、右ペインに最新のコンポーネントが一覧表示されます。

10.1.4. コマンドラインインターフェイスを使用した RHEL for Edge イメージのブループリントの編集

Image Builder のコマンドラインを使用して、RHEL for Edge イメージのブループリントの仕様を変更することができます。そのためには、以下の前提条件を満たしていることを確認してから、手順に従って対応するブループリントを編集してください。

前提条件

  • Image Builder のコマンドラインへアクセスできる。
  • RHEL for Edge イメージのブループリントを作成済みである。

手順

  1. ローカルのテキストファイルにブループリントを保存 (エクスポート) します。

    # composer-cli blueprints save BLUEPRINT-NAME
  2. 選択したテキストエディターで BLUEPRINT-NAME.toml ファイルを編集し、変更を加えます。

    編集を終了する前に、ファイルが有効なブループリントであることを確認します。

  3. バージョン番号を大きくしてください。

    Semantic Versioning スキームを使用していることを確認してください。

    注記

    バージョンを変更しない場合、バージョンのパッチコンポーネントが自動的に増えます。

  4. コンテンツが有効な TOML 仕様かどうかを確認します。詳細は、TOML のドキュメントを参照してください。

    注記

    TOML のドキュメントはコミュニティーが提供しているため、Red Hat のサポート対象外となります。このツールの問題は、https://github.com/toml-lang/toml/issues から報告できます。

  5. ファイルを保存してエディターを閉じます。
  6. ブループリントを Image Builder のコマンドラインにプッシュ (インポート) します。e

    # composer-cli blueprints push BLUEPRINT-NAME.toml
    注記

    ブループリントを Image Builder のコマンドラインに戻す場合は、.toml 拡張子を含むファイル名を指定します。

  7. Image Builder にアップロードされたコンテンツが編集内容と一致していることを確認します。

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

    # composer-cli blueprints depsolve BLUEPRINT-NAME

10.2. RHEL for Edge イメージの更新

10.2.1. RHEL for Edge イメージの更新のデプロイ方法

RHEL for Edge イメージでは、更新を手動でデプロイするか、デプロイメントプロセスを自動化することができます。更新はアトミックな方法で適用されます。つまり、各更新の状態が周知され、更新は段階的に行われ、再起動時にのみ適用されます。デバイスを再起動するまで変更を確認できないため、可能な限り最大限のアップタイムを確保するために再起動をスケジュールすることができます。

イメージの更新中は、更新されたオペレーティングシステムのコンテンツのみがネットワーク経由で転送されます。これにより、イメージ全体を転送するよりもデプロイメントプロセスが効率的になります。/usr 内のオペレーティングシステムのバイナリーとライブラリーは read-only であり、read and write 状態は /var および /etc ディレクトリーで維持されます。

新しいデプロイメントに移動すると、/etc および /var ディレクトリーが新しいデプロイメントにコピーされ、read and write 権限が付与されます。/usr ディレクトリーは、新しいデプロイメントディレクトリーにソフトリンクとしてコピーされ、read-only パーミッションが設定されます。

以下の図は、RHEL for Edge イメージの更新デプロイメントプロセスを説明しています。

イメージのデプロイメント

デフォルトでは、chroot 操作と同様の手順を使用して、新しいシステムが起動されます。新しい /sysroot ディレクトリーには、主に次の部分があります。

  • /sysroot/ostree/repo ディレクトリーにあるリポジトリーデータベース。
  • /sysroot/ostree/deploy/rhel/deploy ディレクトリーのファイルシステムリビジョン。これは、システム更新の各操作によって作成されます。
  • 前出のデプロイメントにリンクしている /sysroot/ostree/boot ディレクトリー。/ostree/sysroot/ostree へのソフトリンクであることに注意してください。/sysroot/ostree/boot ディレクトリーのファイルは複製されません。デプロイメント中に変更されていない場合は、同じファイルが使用されます。ファイルは、/sysroot/ostree/repo/objects ディレクトリーに格納されている別のファイルへのハードリンクです。

オペレーティングシステムは、次の方法でデプロイメントを選択します。

  1. dracut ツールは、initramfs root ファイルシステムの ostree カーネル引数を解析し、/usr ディレクトリーを read-only バインドマウントとして設定します。
  2. /sysroot のデプロイメントディレクトリーを / ディレクトリーにバインドします。
  3. MS_MOVE マウントフラグを使用して、dirs がすでにマウントされているオペレーティングシステムを再マウントします。

何か問題が発生した場合は、rpm-ostree cleanup コマンドを使用して古いデプロイメントを削除することで、デプロイのロールバックを実行できます。各クライアントマシンには、/ostree/repo に格納されている OSTree リポジトリーと、/ostree/deploy/$STATEROOT/$CHECKSUM に格納されている一連のデプロイメントが含まれています。

RHEL for Edge イメージのデプロイメント更新により、複数のデバイス間でシステムの整合性を改善し、再現性が容易になり、システムの状態の変更前と後の分離が向上します。

10.2.2. RHEL for Edge イメージの更新の手動でのデプロイ

RHEL for Edge のブループリントを編集した後、イメージコミットを更新することができます。Image Builder は、更新された RHEL for Edge イメージの新しいコミットを生成します。この新しいコミットを使用して、最新のパッケージバージョンまたは追加パッケージのイメージをデプロイしてください。

RHEL for Edge イメージの更新をデプロイするには、前提条件を満たしていることを確認し、手順に従ってください。

前提条件

手順

  1. Image Builder ダッシュボードで、編集したブループリントの Create Image をクリックします。
  2. Create Image のウィンドウで、以下の手順を実行します。

    1. Image output type ドロップダウンリストから、RHEL for Edge Commit (.tar) を選択します。Next をクリックします。
    2. OSTree settings ページで、以下を入力します。

      1. Repository URL に、イメージに埋め込むコミットの OSTree リポジトリーへの URL を入力します。例: http://10.0.2.2:8080/repository/RHEL for Edge イメージをインストールするための Web サーバーの設定 を参照してください。
      2. Parent commit テキストボックスで、以前に生成された親コミット ID を指定します。Extracting RHEL for Edge image commit を参照してください。
      3. Ref テキストボックスでは、コミットの名前を指定するか、空欄のままにしておくことができます。デフォルトでは、Web コンソールは Refrhel/8/arch_name/edge に指定します。Next をクリックします。
    3. Customizations ページで以下を行います。

      1. オプション: System で、ホスト名を入力します。これを追加しない場合、オペレーティングシステムがホスト名を決定します。Next をクリックします。
      2. オプション: Add User をクリックします。ユーザー名、パスワード、SSH キーを入力します。ユーザーをサーバー管理者としてマークできます。
    4. オプション: パッケージページで、以下を行います。

      1. Available packages に、パッケージ名を入力してイメージをカスタマイズします。Next をクリックします。
    5. Review ページで、カスタマイズを確認します。Save blueprint をクリックします。Create image ボタンを有効にします。
    6. Create image をクリックします。Image Builder は、更新されたブループリントの RHEL for Edge イメージを作成します。

      RHEL for Edge イメージの作成の進捗状況を確認するには、ブレッドクラムからブループリント名をクリックし、次に Images タブをクリックします。

      注記

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

      作成したイメージには、追加した最新のパッケージがある場合は含まれ、親としてオリジナルの commit ID を持っています。

  3. 作成した RHEL for Edge イメージをダウンロードします。RHEL for Edge イメージのダウンロードの詳細は、RHEL for Edge イメージのダウンロード を参照してください。
  4. OSTree コミットを展開します。OSTree コミットの抽出の詳細は、Edge イメージのコミットに対する RHEL の抽出 を参照してください。
  5. 今回は子コミット ID を提供し、docker コンテナーをビルドします。

    # podman build -t name-of-server --build-arg commit=uuid-child_commit.tar .
  6. コンテナーを実行します。

    # podman run --rm -p 8000:80 name-of-server
  7. プロビジョニングされた RHEL システム上で、オリジナルの Edge イメージから、現在の状態を確認します。

    $ rpm-ostree status

    新しいコミット ID がない場合は、以下のコマンドを実行して、利用可能なアップグレードの有無を確認します。

    $ rpm-ostree upgrade --check

    コマンドの出力は、現在アクティブな OSTree コミット ID を提供します。

  8. OSTree を更新して、新しい OSTree のコミット ID を利用できるようにします。

    $ rpm-ostree upgrade

    OSTree は、リポジトリーに更新があるかどうかを確認します。ある場合は、更新を取得し、この新しいコミット更新のデプロイメントを有効化できるように、システムの再起動を要求します。

  9. 再度、現在の状態を確認します。

    $ rpm-ostree status

    これで、コミットが 2 つあることが分かります。

    • アクティブな親コミット。
    • アクティブではなく、差異が 1 つ追加された新しいこミット。
  10. 新しいデプロイメントを有効にし、新しいコミットを有効にするには、システムを再起動します。

    # systemctl reboot

    Anaconda インストーラーは、新しいデプロイメントで再起動します。ログイン画面では、起動に利用可能な新しいデプロイメントが表示されます。

  11. 最新のデプロイメント (コミット) で起動すると、rpm-ostree upgrade コマンドは、新しいデプロイメントが一覧内で最初に表示されるようにブートエントリーを自動的に順序を指定します。必要に応じて、キーボードの矢印キーを使用して GRUB メニューエントリーを選択し、Enter を押します。
  12. ログインユーザーのアカウント認証情報を提供してください。
  13. OSTree の状態を確認します。

    $ rpm-ostree status

    コマンド出力は、アクティブなコミット ID を提供します。

  14. 変更したパッケージが存在する場合は、親コミットと新しいコミットの間で diff を実行します。

    $ rpm-ostree db diff parent_commit new_commit

    更新により、インストールしたパッケージが利用可能になり、すぐに使用できる状態になっていることがわかります。

10.2.3. コマンドラインを使用した RHEL for Edge イメージの更新の手動によるデプロイ

RHEL for Edge のブループリントを編集した後、イメージコミットを更新することができます。Image Builder は、更新された RHEL for Edge イメージの新しいコミットを生成します。新しいコミットを使用して、最新のパッケージバージョンでイメージをデプロイするか、CLI を使用して追加のパッケージをデプロイします。

CLI を使用して RHEL for Edge イメージの更新をデプロイするには、前提条件を満たしていることを確認し、手順に従います。

前提条件

手順

  1. 以下の引数を使用して、RHEL for Edge Commit (.tar) イメージを作成します。

    # composer-cli compose start-ostree --ref ostree_ref --url URL-OSTree-repository -blueprint_name_ image-type

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

  2. RHEL for Edge イメージの作成進捗を確認します。

    # composer-cli compose status
    注記

    イメージの作成プロセスは、最大 10 分から 30 分かかることがあります。

    作成したイメージには、最新パッケージがあれば、そのパッケージが追加され、オリジナルの commit ID を親とします。

  3. 作成した RHEL for Edge イメージをダウンロードします。詳細は、Image Builder コマンドラインインターフェイスを使用した RHEL for Edge イメージのダウンロード を参照してください。
  4. OSTree コミットを展開します。詳細は、RHEL for Edge イメージのコミットの抽出 を参照してください。
  5. httpd を使用して OSTree コミットを提供します。RHEL for Edge イメージをインストールするための Web サーバーの設定 を参照してください。
  6. プロビジョニングされた RHEL システム上で、オリジナルの Edge イメージから、現在の状態を確認します。

    $ rpm-ostree status

    新しいコミット ID がない場合は、以下のコマンドを実行して、利用可能なアップグレードの有無を確認します。

    $ rpm-ostree upgrade --check

    コマンドの出力は、現在アクティブな OSTree コミット ID を提供します。

  7. OSTree を更新して、新しい OSTree のコミット ID を利用できるようにします。

    $ rpm-ostree upgrade

    OSTree は、リポジトリーに更新があるかどうかを確認します。ある場合は、更新を取得し、この新しいコミット更新のデプロイメントを有効化できるように、システムの再起動を要求します。

  8. 再度、現在の状態を確認します。

    $ rpm-ostree status

    利用可能なコミットが 2 つあることが分かります。

    • アクティブな親コミット
    • アクティブではなく、1 つの違いを含む新しいコミット
  9. 新しいデプロイメントを有効にし、新しいコミットを有効にするには、システムを再起動します。

    # systemctl reboot

    Anaconda インストーラーは、新しいデプロイメントで再起動します。ログイン画面では、起動に利用可能な新しいデプロイメントが表示されます。

  10. 最新のデプロイメントで起動すると、rpm-ostree upgrade コマンドは、新しいデプロイメントが一覧内で最初に表示されるようにブートエントリーを自動的に順序を指定します。必要に応じて、キーボードの矢印キーを使用して GRUB メニューエントリーを選択し、Enter を押します。
  11. アカウントの認証情報を使用してログインします。
  12. OSTree の状態を確認します。

    $ rpm-ostree status

    コマンド出力は、アクティブなコミット ID を提供します。

  13. 変更したパッケージが存在する場合は、親コミットと新しいコミットの間で diff を実行します。

    $ rpm-ostree db diff parent_commit new_commit

    更新により、インストールしたパッケージが利用可能になり、すぐに使用できる状態になっていることがわかります。

10.2.4. ネットワーク以外のデプロイメント向けの RHEL for Edge イメージ更新の手動デプロイ

RHEL for Edge のブループリントを編集した後、イメージコミットを更新することができます。Image Builder は、更新された RHEL for Edge イメージの新しいコミットを生成します。この新しいコミットを使用して、最新のパッケージバージョンまたは追加パッケージでイメージをデプロイします。

RHEL for Edge イメージの更新をデプロイするには、前提条件を満たしていることを確認し、手順に従ってください。

前提条件

手順

  1. Image Builder ダッシュボードで、編集したブループリントの Create Image をクリックします。
  2. Create Image ウィンドウで、以下の手順を実行します。

    1. Type ドロップダウンリストから、RHEL for Edge Container(.tar) を選択します。
    2. Parent commit テキストボックスで、以前に生成された親コミット ID を指定します。Extracting RHEL for Edge image commit を参照してください。
    3. リポジトリー テキストボックスで、イメージに埋め込むコミットの OSTree リポジトリーへの URL を指定します。例: http://10.0.2.2:8080/repository/
    4. Ref テキストボックスで、イメージに組み込む RHEL for Edge Container コミットの作成時に指定したものと同じ参照を指定します。例: rhel/edge/test
    5. Create をクリックします。Image Builder は、更新されたブループリントの RHEL for Edge イメージを作成します。

      RHEL for Edge イメージの作成の進捗状況を確認するには、ブレッドクラムからブループリントname をクリックし、次に Images タブをクリックします。

      注記

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

      作成したイメージには、最新パッケージがあれば、そのパッケージが追加され、オリジナルの commit ID を親とします。

  3. 作成した RHEL for Edge イメージをダウンロードします。RHEL for Edge イメージのダウンロードの詳細は、RHEL for Edge イメージのダウンロード を参照してください。
  4. 今回は子コミット ID を提供して Podman に RHEL for Edge コンテナーイメージを読み込みます。

    $ cat ./child-commit_ID-container.tar | sudo podman load
  5. Podman を実行します。

    #  sudo podman run -p 8080:8080 localhost/edge-test
  6. プロビジョニングされた RHEL システム上で、オリジナルの Edge イメージから、現在の状態を確認します。

    $ rpm-ostree status

    新しいコミット ID がない場合は、以下のコマンドを実行して、利用可能なアップグレードの有無を確認します。

    $ rpm-ostree upgrade --check

    利用可能な更新がある場合は、コマンドの出力は、現在アクティブな OSTree コミット ID など、OSTree リポジトリーで利用可能な更新に関する情報を提供します。その他に、利用可能な更新がないことをメッセージに通知するよう求められます。

  7. OSTree を更新して、新しい OSTree のコミット ID を利用できるようにします。

    $ rpm-ostree upgrade

    OSTree は、リポジトリーに更新があるかどうかを確認します。ある場合は、更新を取得し、この新しいコミット更新のデプロイメントを有効化できるように、システムの再起動を要求します。

  8. 現在の状態を確認します。

    $ rpm-ostree status

    これで、コミットが 2 つあることが分かります。

    • アクティブな親コミット。
    • アクティブではなく、差異が 1 つ追加された新しいこミット。
  9. 新しいデプロイメントを有効にし、新しいコミットを有効にするには、システムを再起動します。

    # systemctl reboot

    Anaconda インストーラーは、新しいデプロイメントで再起動します。ログイン画面では、起動に利用可能な新しいデプロイメントが表示されます。

  10. 最新のコミット/デプロイメントで起動すると、rpm-ostree upgrade コマンドは、新しいデプロイメントが一覧内で最初に表示されるようにブートエントリーを自動的に順序を指定します。必要に応じて、キーボードの矢印キーを使用して GRUB メニューエントリーを選択し、Enter を押します。
  11. ログインユーザーのアカウント認証情報を提供してください。
  12. OSTree の状態を確認します。

    $ rpm-ostree status

    コマンド出力は、アクティブなコミット ID を提供します。

  13. 変更したパッケージが存在する場合は、親コミットと新しいコミットの間で diff を実行します。

    $ rpm-ostree db diff parent_commit new_commit

    更新により、インストールしたパッケージが利用可能になり、すぐに使用できる状態になっていることがわかります。

10.3. RHEL for Edge の自動イメージ更新のデプロイ

Edge デバイスに RHEL for Edge イメージをインストールした後、利用可能なイメージ更新がある場合は確認し、自動適用することができます。

rpm-ostreed-automatic.service (systemd サービス) と rpm-ostreed-automatic.timer (systemd タイマー) は、チェックとアップグレードの頻度を制御します。利用可能な更新がある場合は、ステージングされたデプロイメントとして表示されます。

イメージの自動更新をデプロイするには、以下の概要手順を実施します。

  • イメージ更新ポリシーの更新
  • 更新の自動ダウンロードとステージングの有効化

10.3.1. RHEL for Edge イメージの更新ポリシーの更新

イメージ更新ポリシーを更新するには、Edge デバイスの /etc/rpm-ostreed.conf ロケーションにある rpm-ostreed.conf ファイルから AutomaticUpdatePolicy および IdleExitTimeout の設定を使用します。

AutomaticUpdatePolicy 設定は、自動更新ポリシーを制御し、以下の更新チェックのオプションがあります。

  • none: 自動更新を無効にします。デフォルトでは、AutomaticUpdatePolicy 設定は none に設定されています。
  • check: メタデータを十分にダウンロードして、ステータスが rpm-ostree の、利用可能な更新を表示します。
  • stage: 再起動時に適用される更新をダウンロードして展開します。

IdleExitTimeout 設定は、デーモンが終了するまでの非活動時間を秒単位で制御するもので、以下のオプションがあります。

  • 0: オートイグジットを無効にする。
  • 60: デフォルトでは、IdleExitTimeout の設定は 60 に設定されています。

自動更新を有効にするには、以下の手順を実行します。

手順

  1. /etc/rpm-ostreed.conf ファイルで、以下を更新します。

    • AutomaticUpdatePolicy の値を check に変更します。
    • 更新チェックを実行するには、IdleExitTimeout の値を秒単位で指定します。
  2. rpm-ostreed サービスを再読み込みし、systemd タイマーを有効にします。

    # systemctl reload rpm-ostreed
    # systemctl enable rpm-ostreed-automatic.timer --now
  3. rpm-ostree ステータスを確認し、自動更新ポリシーが設定され、時間がアクティブであることを確認します。

    # rpm-ostree status

    コマンド出力は以下を表示します。

    State: idle; auto updates enabled (check; last run <minutes> ago)

    さらに、出力には利用可能な更新情報も表示されます。

10.3.2. RHEL for Edge の更新の自動ダウンロードとステージングの有効化

イメージ更新ポリシーを更新してイメージの更新を確認すると、更新がある場合は更新の詳細と一緒に表示されます。更新の適用を決定した場合は、ポリシーを有効にして、更新を自動的にダウンロードしてステージします。続いて、利用可能なイメージの更新がダウンロードされ、デプロイメントのためにステージングされます。更新は、Edge デバイスを再起動すると適用され、有効になります。

更新の自動ダウンロードとステージングのポリシーを有効にするには、以下の更新を実行します。

手順

  1. /etc/rpm-ostreed.conf ファイルで、AutomaticUpdatePolicy を stage に更新します。
  2. rpm-ostreed サービスを再読み込みします。

    # systemctl enable rpm-ostreed-automatic.timer --now
  3. rpm-ostree の状態を確認します。

    # rpm-ostree status

    コマンド出力は以下を表示します。

    State: idle
    AutomaticUpdates: stage; rpm-ostreed-automatic.timer: last run <time> ago
  4. 更新を開始するには、タイマーによる更新の開始を待つか、手動でサービスを開始することができます。

    # systemctl start rpm-ostreed-automatic.service

    更新が開始すると、rpm-ostree の状態は以下のようになります。

    # rpm-ostree status
    State: busy
    AutomaticUpdates: stage; rpm-ostreed-automatic.service: running
    Transaction: automatic (stage)

    更新が完了すると、デプロイメントの一覧に新しいデプロイメントがステージングされ、オリジナルの起動したデプロイメントはそのままになります。新しいデプロイメントを使用してシステムを起動するか、次の更新を待つかを決めることができます。

    デプロイメントの一覧を表示するには、rpm-ostree status コマンドを実行してください。

    以下は出力例です。

    # rpm-ostree status
    State: idle
    AutomaticUpdates: stage; rpm-ostreed-automatic.timer: last run <time> ago
    Deployments:

    更新されたパッケージの詳細を含むデプロイメントの一覧を表示するには、rpm-ostree status -v コマンドを実行してください。

10.4. RHEL for Edge イメージのロールバック

更新されたイメージが正常にデプロイされたかどうかを確認することができます。デプロイが失敗した場合は、以前のバージョンにロールバックすることができます (コミット)。以前の機能状態にロールバックするには、手動で手順を実行するか、自動化されたプロセスを使用することができます。

10.4.1. RHEL for Edge イメージのロールバック方法

RHEL for Edge イメージでは、トランザクション更新のみがオペレーティングシステムに適用されます。トランザクション更新では、失敗した更新を最後の既知の良い状態に簡単にロールバックすることができ、更新中のシステム障害を防ぐことができます。

Greenboot でインテリジェントなロールバックを使用して、アプリケーションの安定性を選択するか、またはセキュリティー更新のあるアプリケーションを選択するかという問題をなくすことができます。

Greenboot は rpm-ostree を活用し、システム起動時に実行されるカスタムヘルスチェックを実行します。問題が発生した場合、システムは変更をロールバックし、最後の作業状態を保持します。rpm-ostree 更新をデプロイすると、スクリプトが実行され、重要なサービスが更新後も機能することが確認されます。システムが機能しない場合、更新はシステムの最新の動作バージョンにロールバックされます。このプロセスにより、RHEL for Edge デバイスが確実に動作状態になります。

Greenboot のディレクトリー構造は次のとおりです。

例10.1 Greenboot ディレクトリー構造

etc
└─ greenboot
   ├─ check
   |   └─ required.d
   |   └─ init.py
   └─ green.d
   └─ red.d
/etc/greenboot/check/required.d
失敗してはならないヘルスチェックが含まれています。
/etc/greenboot/check/wanted.d
失敗する可能性のあるヘルスチェックが含まれています。
/etc/greenboot/green.d
起動が成功した後に実行するスクリプトが含まれています。
/etc/greenboot/red.d
起動に失敗した後に実行するスクリプトが含まれています。システムは起動を 3 回試行し、失敗した場合はスクリプトを実行します。

以下の図は、RHEL for Edge イメージのロールバックプロセスを説明しています。

イメージ復元プロセス

10.4.2. RHEL for Edge イメージの手動でのロールバック

RHEL for Edge イメージ更新のデプロイメントに失敗した場合、または更新が正常に動作しない場合は、手動で以前のバージョンのデプロイメントにロールバックすることができます。

前のバージョンにロールバックするには、以下の手順を実行します。

手順

  1. rollback コマンドを実行します。

    # rpm-ostree rollback

    コマンドの出力では、移動中のコミット ID の詳細が確認でき、削除されたパッケージの詳細を含めて、完了したトランザクションが表示されます。

  2. システムを再起動します。

    # systemctl reboot

    このコマンドは、安定したコンテンツが含まれる 1 つ前のコミットを有効にします。変更が適用され、以前のバージョンが復元されます。

10.4.3. 自動化プロセスを使用した RHEL for Edge イメージのロールバック

Greenboot チェックは、起動プロセスに統合されたフレームワークを提供し、ヘルスチェックが失敗した場合は rpm-ostree ロールバックを起動できます。ヘルスチェックについては、ヘルスチェックの合否を示すカスタムスクリプトを作成できます。結果をもとに、ロールバックをトリガーするタイミングを決めることができます。

ヘルスチェックスクリプトを作成するには、以下の手順を実行します。

手順

  1. 標準の終了コード 0 を返すスクリプトを作成します。

    たとえば、以下のスクリプトにより、設定された DNS サーバーを必ず利用できます。

    #!/bin/bash
    
    DNS_SERVER=$(grep ^nameserver /etc/resolv.conf | head -n 1 | cut -f2 -d" ")
    COUNT=0
    # check DNS server is available
    ping -c1 $DNS_SERVER
    while [ $? != '0' ] && [ $COUNT -lt 10 ]; do
    ((COUNT++))
    echo "Checking for DNS: Attempt $COUNT ."
    sleep 10
    ping -c 1 $DNS_SERVER
    done
  2. /etc/greenboot/check/required.d/ でヘルスチェック用の実行ファイルを追加します。

    chmod +x check-dns.sh

    次の再起動時には、システムが boot-complete.target に入る前に、スクリプトが起動プロセスの一環として実行されます。ヘルスチェックが正常に行われた場合は何もしません。ヘルスチェックに失敗した場合は、システムが数回再起動されてから、更新が失敗したとマークされ、前回の更新にロールバックされます。

検証手順

デフォルトゲートウェイにアクセスできるかどうかを確認するには、以下のヘルスチェックスクリプトを実行します。

  1. 標準の終了コード 0 を返すスクリプトを作成します。

    #!/bin/bash
    
    DEF_GW=$(ip r | awk '/^default/ {print $3}')
    SCRIPT=$(basename $0)
    
    count=10
    connected=0
    ping_timeout=5
    interval=5
    
    while [ $count -gt 0 -a $connected -eq 0 ]; do
      echo "$SCRIPT: Pinging default gateway $DEF_GW"
      ping -c 1 -q -W $ping_timeout $DEF_GW > /dev/null 2>&1 && connected=1 || sleep $interval
      ((--count))
    done
    
    if [ $connected -eq 1 ]; then
      echo "$SCRIPT: Default gateway $DEF_GW is reachable."
      exit 0
    else
      echo "$SCRIPT: Failed to ping default gateway $DEF_GW!" 1>&2
      exit 1
    fi
  2. /etc/greenboot/check/required.d/ ディレクトリーでヘルスチェックの実行ファイルを追加します。

    chmod +x check-gw.sh

付録A 用語とコマンド

rpm ostree の用語およびコマンドの詳細をご覧ください。

A.1. OSTree および rpm-ostree の用語

以下は、OSTree および rpm-ostree のイメージで使用される便利な用語の一部になります。

表A.1 OSTree および rpm-ostree の用語

用語定義

OSTree

Linux ベースのオペレーティングシステムのバージョンを管理するために使用するツールです。OSTree のツリービューは Git に似ていて、同様のコンセプトに基づいています。

rpm-ostree

オペレーティングシステムの更新をホストするハイブリッドイメージまたはシステムパッケージ。

Commit

オペレーティングシステムのリリースバージョンまたはイメージバージョン。Image Builder は、RHEL for Edge イメージの ostree コミットを生成します。これらのイメージを使用して、Edge サーバーに RHEL をインストールしたり、更新したりすることができます。

Refs

ostree 内のブランチを表します。Refs は常に最新のコミットに解決します。たとえば、rhel/8/x86_64/edge です。

Revision (Rev)

特定のコミットの SHA-256。

Remote

ostree コンテンツをホストする http または https エンドポイント。これは yum リポジトリーの baseurl に似ています。

static-delta

ostree イメージへの更新は常にデルタ更新です。RHEL for Edge イメージの場合、更新されるファイル数により、TCP のオーバーヘッドが予想以上に大きくなる可能性があります。TCP のオーバーヘッドを回避するために、特定のコミット間で static-delta を生成し、単一の接続で更新を送信することができます。この最適化は、接続性に制約のある大規模なデプロイメントをサポートします。

A.2. OSTree コマンド

以下の表は、OSTree イメージのインストールまたは管理時に使用できる OSTree コマンドをいくつか示しています。

表A.2 OSTree コマンド

ostree pull

ostree pull-local --repo [path] src

ostree pull-local <path> <rev> --repo=<repo-path>

ostree pull <URL> <rev> --repo=<repo-path>

ostree summary

ostree summary -u --repo=<repo-path>

参照先の表示

ostree refs --repo ~/Code/src/osbuild-iot/build/repo/ --list

リポジトリーでのコミットの表示

ostree log --repo=/home/gicmo/Code/src/osbuild-iot/build/repo/ <REV>

コミットの検査

ostree show --repo build/repo <REV>

リポジトリーのリモートの一覧表示

ostree remote list --repo <repo-path>

REV の解決

ostree rev-parse --repo ~/Code/src/osbuild-iot/build/repo fedora/x86_64/osbuild-demo

ostree rev-parse --repo ~/Code/src/osbuild-iot/build/repo b3a008eceeddd0cfd

static-delta の作成

ostree static-delta generate --repo=[path] --from=REV --to=REV

GPG 鍵を使用した 既存 の ostree コミットの署名

ostree gpg-sign --repo=<repo-path> --gpg-homedir <gpg_home> COMMIT KEY-ID…

A.3. rpm-ostree コマンド

以下の表は、OSTree イメージのインストールまたは管理時に使用できる rpm-ostree コマンドの一部を示しています。

表A.3 rpm-ostree コマンド

コマンド説明

rpm-ostree --repo=/home/gicmo/Code/src/osbuild-iot/build/repo/ db list <REV>

このコマンドは、リポジトリーへの <REV> コミットに存在するパッケージを一覧表示します。

rpm-ostree rollback

OSTree は、deployments と呼ばれるブートローダーエントリーの順序付きリストを管理します。インデックス 0 のエントリーは、デフォルトのブートローダーエントリーです。エントリーごとに個別の /etc ディレクトリーがありますが、エントリーはすべて 1 つの /var ディレクトリーを共有します。Tab を押して起動を中断すると、ブートローダーを使用してエントリーを選択できます。これにより、以前の状態にロールバックされます。つまり、デフォルトのデプロイメントはデフォルト以外のデプロイメントに変更されます。

rpm-ostree status

このコマンドは、使用中の現在のデプロイメントに関する情報を提供します。起動時にリストで一番上にあるデプロイメントがデフォルトになるなど、利用可能な全デプロイメントの名前と refspec が順番に記載されます。* のマークが付いたデプロイメントは現在の起動されるデプロイメントを、r のマークが付いたものは最新のアップグレードを示します。

rpm-ostree db list

このコマンドを使用して、コミットされたパッケージを確認します。1 つ以上のコミットを指定する必要がありますが、範囲や複数指定したコミットも機能します。

rpm-ostree db diff

このコマンドを使用して、2 つの rev (リビジョン) のツリー間でパッケージがどのように異なるかを表示します。rev を指定しないと、起動したコミットが保留中のコミットと比較されます。rev を 1 つだけ指定すると、起動したコミットはその rev と比較されます。

rpm-ostree upgrade

このコマンドは、現在のツリーの最新バージョンをダウンロードしてデプロイし、現在のツリーを次回の起動のデフォルトとして設定します。これは、実行中のファイルシステムツリーには影響はありません。変更を適用するには、再起動する必要があります。

関連情報

  • [citetitle] rpm-ostree の man ページ

A.4. FDO 自動オンボーディング用語

FDO の用語について

表A.4 FDO の用語

コマンド説明

FDO

FIDO Device Onboarding

Device

ハードウェア、デバイス、またはコンピューター。

Owner

デバイスの最終的な所有者 - 会社または IT 部門。

製造元

デバイスの製造元。

製造元サーバー

そのデバイス向けのデバイス認証情報を作成します。

製造元クライアント

製造サーバーの場所を通知します。

所有者のバウチャー (OV)

個々のデバイスの所有権の記録。次の情報が含まれています。

* 所有者 (fdo-owner-onboarding-service)

* ランデブーサーバー - FIDO サーバー (fdo-rendezvous-server)

* デバイス (少なくとも 1 つの組み合わせ)(fdo-manufacturing-service)

デバイス認証情報 (DC)

製造時にデバイスに保存されている主要な認証情報およびランデブー。

製造サーバーを設定するためのキー

* key_path

* cert_path

* key_type

* mfg_string_type: デバイスのシリアル番号

* allowed_key_storage_types: 使用しているデバイスの認証に使用されるデータを保護するファイルシステムおよびトラステッドプラットフォームモジュール (TPM)。

ランデブーサーバー

デバイスによって使用され、後でデバイスの所有者を見つけるプロセスで使用されるサーバーへのリンク

関連情報

A.5. FDO 自動オンボーディングテクノロジー

以下は、FDO 自動オンボーディングに関連して使用されるテクノロジーです。

表A.5 OSTree および rpm-ostree の用語

Technology定義

UEFI

Unified Extensible Firmware Interface

RHEL

Red Hat® オペレーティングシステム

rpm-ostree

背景イメージベースのアップグレード。

Greenboot

rpm-ostree 上の systemd の Healthcheck フレームワーク。

Osbuild

オペレーティングシステムアーティファクト用のパイプラインベースのビルドシステム。

Container

Linux® コンテナーは、システムの他の部分から分離された 1 つ以上のプロセスのセットです。

Coreos-installer

RHEL イメージのインストールを支援し、UEFI でシステムを起動します。

FIDO FDO

設定およびオンボーディングデバイスをプロビジョニングするための仕様プロトコル。