Red Hat Training

A Red Hat training course is available for RHEL 8

RHEL システムイメージのカスタマイズ

Red Hat Enterprise Linux 8

Red Hat Enterprise Linux 8 で RHEL Image Builder を使用してカスタマイズしたシステムイメージを作成する

Red Hat Customer Content Services

概要

RHEL Image Builder は、デプロイメント可能なカスタムシステムイメージ (インストールディスク、仮想マシン、クラウドベンダー固有のイメージなど) を作成するツールです。RHEL Image Builder を使用すると、出力タイプごとに必要な特定の設定が不要になるため、手動の手順と比較してこれらのイメージをより迅速に作成できます。

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

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

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

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

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

  1. Jira の Web サイトにログインします。
  2. 上部のナビゲーションバーで Create をクリックします。
  3. Summary フィールドにわかりやすいタイトルを入力します。
  4. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
  5. ダイアログの下部にある Create をクリックします。

第1章 RHEL Image Builder の説明

システムをデプロイするには、システムイメージを作成します。RHEL システムイメージを作成するには、RHEL Image Builder ツールを使用します。RHEL Image Builder を使用することで、RHEL のカスタマイズされたシステムイメージを作成できます。これには、クラウドプラットフォームへのデプロイメント用に準備されたシステムイメージが含まれます。RHEL Image Builder は、各出力タイプのセットアップの詳細を自動的に処理するため、手動でイメージを作成する方法よりも使いやすく、作業が高速です。RHEL Image Builder の機能には、composer-cli ツールのコマンドラインインターフェイス、または RHEL Web コンソールのグラフィカルユーザーインターフェイスを使用してアクセスできます。

注記

RHEL 8.3 以降では、osbuild-composer バックエンドが lorax-composer に取って代わります。新しいサービスには、イメージビルド向けの REST API が含まれます。

1.1. RHEL Image Builder の用語

RHEL Image Builder は次の概念を使用します。

ブループリント

ブループリントは、カスタマイズされたシステムイメージの説明です。システムの一部となるパッケージとカスタマイズが一覧表示されます。ブループリントをカスタマイズして編集し、特定のバージョンとして保存できます。ブループリントからシステムイメージを作成すると、イメージは RHEL Image Builder インターフェイスでブループリントに関連付けられます。

ブループリントは TOML 形式で作成します。

Compose
コンポーズは、特定のブループリントの特定のバージョンに基づいた、システムイメージの個別のビルドです。用語としての Compose は、システムイメージと、その作成、入力、メタデータ、およびそのプロセス自体のログを指します。
カスタマイズ
カスタマイズは、パッケージではないイメージの仕様です。これには、ユーザー、グループ、および SSH 鍵が含まれます。

1.2. RHEL Image Builder の出力形式

RHEL Image Builder は、次の表に示す複数の出力形式でイメージを作成できます。

表1.1 RHEL Image Builder の出力形式

説明CLI 名ファイル拡張子

QEMU イメージ

qcow2

.qcow2

ディスクアーカイブ

tar

.tar

Amazon Web Services

raw

.raw

Microsoft Azure

vhd

.vhd

Google Cloud Platform

gce

.tar.gz

VMware vSphere

vmdk

.vmdk

VMware vSphere

ova

.ova

Openstack

openstack

.qcow2

RHEL for Edge Commit

edge-commit

.tar

RHEL for Edge Container

edge-container

.tar

RHEL for Edge Installer

edge-installer

.iso

RHEL for Edge Raw イメージ

edge-raw-image

.raw.xz

RHEL for Edge Simplified Installer

edge-simplified-installer

.iso

RHEL for Edge AMI

edge-ami

.ami

RHEL for Edge VMDK

edge-vsphere

.vmdk

RHEL インストーラー

image-installer

.iso

Oracle Cloud Infrastructure

.oci

.qcow2

サポートされているタイプを確認するには、次のコマンドを実行します。

# composer-cli compose types

第2章 RHEL Image Builder のインストール

RHEL Image Builder を使用する前に、RHEL Image Builder をインストールする必要があります。

2.1. RHEL Image Builder のシステム要件

RHEL Image Builder を実行するホストは、次の要件を満たしている必要があります。

表2.1 RHEL Image Builder のシステム要件

パラメーター最低要求値

システムのタイプ

専用のホストまたは仮想マシン。RHEL Image Builder は、Red Hat Universal Base Images (UBI) などのコンテナーではサポートされていないことに注意してください。

プロセッサー

2 コア

メモリー

4 GiB

ディスク領域

`/var/cache/` ファイルシステムに 20 GiB の空き領域

アクセス権限

root

ネットワーク

Red Hat コンテンツ配信ネットワーク (CDN) へのインターネット接続

注記

インターネットに接続できない場合は、分離されたネットワークで RHEL Image Builder を使用してください。そのためには、Red Hat コンテンツ配信ネットワーク (CDN) に接続しないように、ローカルリポジトリーを参照するようにデフォルトのリポジトリーをオーバーライドする必要があります。コンテンツが内部でミラーリングされていることを確認するか、Red Hat Satellite を使用してください。

2.2. RHEL Image Builder のインストール

RHEL Image Builder をインストールして、osbuild-composer パッケージのすべての機能にアクセスできるようにします。

前提条件

  • RHEL Image Builder をインストールする RHEL ホストにログインしている。
  • ホストが Red Hat Subscription Manager (RHSM) または Red Hat Satellite にサブスクライブしている。
  • RHEL Image Builder パッケージをインストールできるように、BaseOS リポジトリーおよび AppStream リポジトリーを有効化している。

手順

  1. RHEL Image Builder とその他の必要なパッケージをインストールします。

    # yum install osbuild-composer composer-cli cockpit-composer
    • osbuild-composer - カスタマイズした RHEL オペレーティングシステムイメージをビルドするサービス。
    • composer-cli - このパッケージにより、CLI インターフェイスへのアクセスが可能になります。
    • cockpit-composer - このパッケージにより、Web UI インターフェイスへのアクセスが可能になります。Web コンソールは、cockpit-composer パッケージの依存関係としてインストールされます。
  2. RHEL Image Builder ソケットを有効にして起動します。

    # systemctl enable --now osbuild-composer.socket
  3. Web コンソールで RHEL Image Builder を使用する場合は、それを有効にして起動します。

    # systemctl enable --now cockpit.socket

    osbuild-composer サービスと cockpit サービスは、最初のアクセス時に自動的に起動します。

  4. ログアウトおよびログインしなくても composer-cli コマンドのオートコンプリート機能がすぐに動作するように、シェル設定スクリプトをロードします。

    $ source /etc/bash_completion.d/composer-cli
  5. RHEL ホストで実行中の osbuild-composer サービスを再起動します。

    # systemctl restart osbuild-composer
重要

osbuild-composer パッケージは、Red Hat Enterprise Linux 8.3 以降の新機能すべてに焦点を当てた新しいバックエンドエンジンで、デフォルト設定として推奨されています。以前のバックエンドの lorax-composer は非推奨となり、Red Hat Enterprise Linux 8 ライフサイクルの残りの期間、一部の修正のみを受信し、今後のメジャーリリースから削除される予定です。osbuild-composer を優先するには、lorax-composer のアンインストールを推奨します。

検証

  • composer-cli を実行して、インストールが動作することを確認します。

    # composer-cli status show

トラブルシューティング

システムジャーナルを使用して、RHEL Image Builder のアクティビティーを追跡できます。さらに、ファイル内のログメッセージを見つけることができます。

  • トレースバックのジャーナル出力を見つけるには、次のコマンドを実行します。

    $ journalctl | grep osbuild
  • リモートワーカーとローカルワーカーの両方を表示するには:

    $ journalctl -u osbuild-worker*
  • 実行中のサービスを表示するには:

    $ journalctl -u osbuild-composer.service

2.3. lorax-composer RHEL Image Builder バックエンドに戻す手順

osbuild-composer バックエンドは、はるかに拡張性が高くなっていますが、現時点では以前の lorax-composer バックエンドとの機能パリティーがありません。

以前のバックエンドに戻すには、以下の手順に従います。

前提条件

  • osbuild-composer パッケージがインストールされている。

手順

  1. osbuild-composer バックエンドを削除します。

    # yum remove osbuild-composer
    # yum remove weldr-client
  2. /etc/yum.conf ファイルで、osbuild-composer パッケージの除外エントリーを追加します。

    # cat /etc/yum.conf
    [main]
    gpgcheck=1
    installonly_limit=3
    clean_requirements_on_remove=True
    best=True
    skip_if_unavailable=False
    exclude=osbuild-composer weldr-client
  3. lorax-composer パッケージをインストールします。

    # yum install lorax-composer composer-cli
  4. lorax-composer サービスを有効にして開始し、再起動するたびに開始します。

    # systemctl enable --now lorax-composer.socket
    # systemctl start lorax-composer

第3章 RHEL Image Builder リポジトリーの設定

RHEL Image Builder を使用するには、確実にリポジトリーを設定する必要があります。RHEL Image Builder では、以下のタイプのリポジトリーを使用できます。

公式リポジトリーのオーバーライド
Red Hat Content Delivery Network (CDN) 公式リポジトリー以外の場所 (ネットワーク内のカスタムミラーなど) からベースシステム RPM をダウンロードする場合は、これらを使用します。公式リポジトリーのオーバーライドを使用するとデフォルトのリポジトリーが無効になるため、カスタムミラーには必要なパッケージがすべて含まれている必要があります。
カスタムサードパーティーリポジトリー
これらを使用して、公式の RHEL リポジトリーで利用できないパッケージを含めます。

3.1. RHEL Image Builder へのカスタムサードパーティーリポジトリーの追加

カスタムのサードパーティーソースをリポジトリーに追加し、composer-cli 使用してこれらのリポジトリーを管理できます。

前提条件

  • カスタムサードパーティーリポジトリーの URL を持っている。

手順

  1. /root/repo.toml などのリポジトリーソースファイルを作成します。以下に例を示します。

    id = "k8s"
    name = "Kubernetes"
    type = "yum-baseurl"
    url = "https://server.example.com/repos/company_internal_packages/"
    check_gpg = false
    check_ssl = false
    system = false

    type フィールドは、次の有効な値を受け入れます: yum-baseurlyum-mirrorlist、および yum-metalink

  2. ファイルを TOML 形式で保存します。
  3. 新しいサードパーティーソースを RHEL Image Builder に追加します。

    $ composer-cli sources add <file-name>.toml

検証

  1. 新しいソースが正常に追加されたかどうかを確認します。

    $ composer-cli sources list
  2. 新しいソースコンテンツを確認します。

    $ composer-cli sources info <source_id>

3.2. 特定のディストリビューションを使用した RHEL Image Builder へのサードパーティーリポジトリーの追加

オプションのフィールド distro を使用して、カスタムサードパーティーソースファイル内のディストリビューションのリストを指定できます。リポジトリーファイルは、イメージのビルド中に依存関係を解決する際にディストリビューション文字列リストを使用します。

rhel-9 を指定するリクエストはすべて、このソースを使用します。たとえば、パッケージをリストして rhel-9 を指定すると、このソースが含まれます。ただし、ホストディストリビューションのパッケージのリストには、このソースは含まれません。

前提条件

  • カスタムサードパーティーリポジトリーの URL を持っている。
  • 指定するディストリビューションのリストがある。

手順

  1. /root/repo.toml などのリポジトリーソースファイルを作成します。たとえば、ディストリビューションを指定するには、次のようにします。

    check_gpg = true
    check_ssl = true
    distros = ["rhel-8"]
    id = "rh9-local"
    name = "packages for RHEL"
    system = false
    type = "yum-baseurl"
    url = "https://local/repos/rhel8/projectrepo/"
  2. ファイルを TOML 形式で保存します。
  3. 新しいサードパーティーソースを RHEL Image Builder に追加します。

    $ composer-cli sources add <file-name>.toml

検証

  1. 新しいソースが正常に追加されたかどうかを確認します。

    $ composer-cli sources list
  2. 新しいソースコンテンツを確認します。

    $ composer-cli sources info <source_id>

3.3. GPG を使用したリポジトリーのメタデータの確認

破損したパッケージを検出して回避するために、DNF パッケージマネージャーを使用して RPM パッケージの GNU Privacy Guard (GPG) 署名を確認でき、リポジトリーのメタデータが GPG キーで署名されているかどうかも確認できます。

gpgkeys フィールドにキー URL を設定することで、https 経由でチェックを行う gpgkey を入力できます。あるいは、セキュリティーを向上させるために、キー全体を gpgkeys フィールドに埋め込んで、キーを URL から取得する代わりに直接インポートすることもできます。

前提条件

  • リポジトリーとして使用するディレクトリーが存在し、パッケージが含まれている。

手順

  1. リポジトリーを作成するフォルダーにアクセスします。

    $ cd repo/
  2. createrepo_c を実行して、RPM パッケージからリポジトリーを作成します。

    $ createrepo_c .
  3. リポデータがあるディレクトリーにアクセスします。

    $ cd repodata/
  4. repomd.xml ファイルに署名します。

    $ gpg -u <_gpg-key-email_> --yes --detach-sign --armor /srv/repo/example/repomd.xml
  5. リポジトリーで GPG 署名チェックを有効にするには、以下を行います。

    1. リポジトリーソースで check_repogpg = true を設定します。
    2. チェックを行う gpgkey を入力します。キーが https 経由で利用できる場合は、gpgkeys フィールドにキーのキー URL を設定します。URL キーは必要なだけ追加できます。

      以下に例を示します。

      check_gpg = true
      check_ssl = true
      id = "signed local packages"
      name = "repository_name"
      type = "yum-baseurl"
      url = "https://local/repos/projectrepo/"
      check_repogpg = true
      gpgkeys=["https://local/keys/repokey.pub"]

      代わりに、たとえば次のように GPG キーを gpgkeys フィールドに直接追加します。

      check_gpg = true
      check_ssl = true
      check_repogpg
      id = "custom-local"
      name = "signed local packages"
      type = "yum-baseurl"
      url = "https://local/repos/projectrepo/"
      gpgkeys=["https://remote/keys/other-repokey.pub",
      '''-----BEGIN PGP PUBLIC KEY BLOCK-----
      …​
      -----END PGP PUBLIC KEY BLOCK-----''']
      • テストで署名が見つからない場合、GPG ツールは次のようなエラーを表示します。

        $ GPG verification is enabled, but GPG signature is not available.
        This may be an error or the repository does not support GPG verification:
        Status code: 404 for http://repo-server/rhel/repodata/repomd.xml.asc (IP: 192.168.1.3)
      • 署名が無効な場合、GPG ツールは次のようなエラーを表示します。

        repomd.xml GPG signature verification error: Bad GPG signature

検証

  • リポジトリーの署名を手動でテストします。

    $ gpg --verify /srv/repo/example/repomd.xml.asc

3.4. RHEL Image Builder 公式リポジトリーのオーバーライド

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

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

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

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

注記

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

前提条件

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

手順

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

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

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

  3. 次の構造を JSON ファイルに追加します。次の属性から 1 つだけ文字列形式で指定します。

    • baseurl - リポジトリーのベース URL。
    • metalink - 有効なミラーリポジトリーのリストを含む metallink ファイルの URL。
    • mirrorlist - 有効なミラーリポジトリーのリストを含む mirrorlist ファイルの URL。gpgkeymetadata_expire などの残りのフィールドはオプションです。

      以下に例を示します。

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

      あるいは、rhel-version.json を RHEL のバージョン (例: rhel-9.json) に置き換えて、ディストリビューション用の JSON ファイルをコピーすることもできます。

      $  cp /usr/share/osbuild-composer/repositories/rhel-version.json /etc/osbuild-composer/repositories/
  4. オプション:JSON ファイルを確認します。

    $ json_verify  /etc/osbuild-composer/repositories/<file>.json
  5. rhel-9.json ファイル内の baseurl パスを編集して保存します。以下に例を示します。

    $ /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.6. サブスクリプションが必要なシステムリポジトリーのオーバーライド

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

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

    注記

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

前提条件

手順

  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
            }
        ]
    }
  3. osbuild-composer.service を再起動します。

    $ sudo systemctl restart osbuild-composer.service

第4章 RHEL Image Builder CLI を使用したシステムイメージの作成

RHEL Image Builder は、カスタムのシステムイメージを作成するツールです。RHEL Image Builder を制御し、カスタムシステムイメージを作成するには、コマンドラインインターフェイス (CLI) または Web コンソールインターフェイスを使用できます。

4.1. RHEL Image Builder コマンドラインインターフェイスの紹介

RHEL Image Builder コマンドラインインターフェイス (CLI) を使用してブループリントを作成するには、適切なオプションとサブコマンドを指定して composer-cli コマンドを実行します。

コマンドラインインターフェイスのワークフローの概要は次のようになります。

  1. ブループリントを作成するか、既存のブループリント定義をプレーンテキストファイルにエクスポート (保存) します。
  2. テキストエディターでこのファイルを編集します。
  3. ブループリントテキストファイルを Image Builder にインポートします。
  4. Compose を実行して、ブループリントからイメージをビルドします。
  5. イメージファイルをエクスポートしてダウンロードします。

composer-cli コマンドには、ブループリントを作成する基本的なサブコマンドとは別に、設定したブループリントと Compose の状態を調べるための多くのサブコマンドが用意されています。

4.2. RHEL Image Builder を非 root ユーザーとして使用する

非 root として composer-cli コマンドを実行するには、ユーザーが weldr グループに属している必要があります。

前提条件

  • ユーザーを作成している。

手順

  • ユーザーを weldr または root グループに追加するには、次のコマンドを実行します:

    $ sudo usermod -a -G weldr user
    $ newgrp weldr

4.3. コマンドラインインターフェイスを使用したブループリントの作成

コマンドラインインターフェイス (CLI) を使用して、新しい RHEL Image Builder ブループリントを作成できます。ブループリントには、最終的なイメージと、パッケージやカーネルのカスタマイズなどのそのカスタマイズが記述されています。

前提条件

  • root ユーザーまたは welder グループのメンバーであるユーザーとしてログインしている。

手順

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

    name = "BLUEPRINT-NAME"
    description = "LONG FORM DESCRIPTION TEXT"
    version = "0.0.1"
    modules = []
    groups = []

    BLUEPRINT-NAME および LONG FORM DESCRIPTION TEXT は、ブループリントの名前および説明に置き換えます。

    0.0.1 は、セマンティックバージョニングスキームに従ってバージョン番号に置き換えます。

  2. ブループリントに含まれるすべてのパッケージに、次の行をファイルに追加します。

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

    package-name は、パッケージ名 (httpdgdb-doccoreutils など) に置き換えます。

    必要に応じて、package-version を使用するバージョンに置き換えます。このフィールドは、dnf バージョンの指定に対応します。

    • 特定のバージョンについては、8.7.0 などの正確なバージョン番号を使用してください。
    • 利用可能な最新バージョンについては、アスタリスク * を使用してください。
    • 最新のマイナーバージョンを指定する場合は、8.* などの形式を使用してください。
  3. ニーズに合わせてブループリントをカスタマイズします。たとえば、Simultaneous Multi Threading (SMT) を無効にするには、ブループリントファイルに次の行を追加します。

    [customizations.kernel]
    append = "nosmt=force"

    その他に利用できるカスタマイズについては、サポートされているイメージのカスタマイズ を参照してください。

  4. たとえば、ファイルを BLUEPRINT-NAME.toml として保存し、テキストエディターを閉じます。
  5. ブループリントをプッシュします。

    # composer-cli blueprints push BLUEPRINT-NAME.toml

    BLUEPRINT-NAME は、前の手順で使用した値に置き換えます。

    注記

    composer-cli を非 root として使用してイメージを作成するには、ユーザーを weldr または root グループに追加します。

    # usermod -a -G weldr user
    $ newgrp weldr

検証

  • ブループリントがプッシュされ存在していることを確認するには、既存のブループリントを一覧表示します。

    # composer-cli blueprints list
  • 追加したばかりのブループリント設定を表示します。

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

    # composer-cli blueprints depsolve BLUEPRINT-NAME

    RHEL Image Builder がカスタムリポジトリーのパッケージの依存関係を解決できない場合は、osbuild-composer キャッシュを削除します。3

    $ sudo rm -rf /var/cache/osbuild-composer/*
    $ sudo systemctl restart osbuild-composer

4.4. コマンドラインインターフェイスを使用したブループリントの編集

コマンドライン (CLI) インターフェイスで既存のブループリントを編集して、たとえば、新しいパッケージを追加したり、新しいグループを定義したり、カスタマイズしたイメージを作成したりできます。そのためには、以下の手順に従います。

前提条件

  • ブループリントを作成している。

手順

  1. 既存のブループリントをリストします。

    # composer-cli blueprints list
  2. ブループリントをローカルテキストファイルに保存します。

    # composer-cli blueprints save BLUEPRINT-NAME
  3. BLUEPRINT-NAME .toml ファイルをテキストエディターで編集し、変更を加えます。
  4. 編集を完了する前に、ファイルが有効なブループリントであることを確認します。

    1. ブループリントに次の行が存在する場合は、それを削除します。

      packages = []
    2. たとえば、バージョン番号を 0.0.1 から 0.1.0 に増やします。RHEL Image Builder のブループリントバージョンでは、セマンティックバージョニングスキームを使用する必要があります。また、バージョンを変更しない場合、パッチバージョンコンポーネントが自動的に増加することにも注意してください。
  5. ファイルを保存し、テキストエディターを閉じます。
  6. ブループリントを RHEL Image Builder にプッシュして戻します。

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

    ブループリントを RHEL iImage Builder にインポートして戻すには、.toml 拡張子を含むファイル名を指定しますが、他のコマンドではブループリント名のみを使用します。

検証

  1. RHEL Image Builder にアップロードした内容が編集内容と一致することを確認するには、ブループリントの内容をリストします。

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

    # composer-cli blueprints depsolve BLUEPRINT-NAME

4.5. RHEL Image Builder コマンドラインインターフェイスでのシステムイメージの作成

RHEL Image Builder のコマンドラインインターフェイスを使用して、カスタマイズした RHEL イメージをビルドできます。そのためには、ブループリントとイメージタイプを指定する必要があります。必要に応じて、ディストリビューションを指定することもできます。ディストリビューションを指定しない場合は、ホストシステムと同じディストリビューションとバージョンが使用されます。アーキテクチャーもホストのアーキテクチャーと同じになります。

前提条件

手順

  1. オプション: 作成できるイメージ形式をリストします。

    # composer-cli compose types
  2. Compose を起動します。

    # composer-cli compose start BLUEPRINT-NAME IMAGE-TYPE

    BLUEPRINT-NAME をブループリントの名前に、IMAGE-TYPE をイメージのタイプに置き換えます。使用可能な値は、composer-cli compose types コマンドの出力を参照してください。

    作成プロセスはバックグラウンドで開始され、作成者の Universally Unique Identifier (UUID) が表示されます。

  3. イメージの作成が完了するまでに最大 10 分かかる場合があります。

    Compose のステータスを確認するには、以下のコマンドを実行します。

    # composer-cli compose status

    Compose が完了すると、ステータスが FINISHED になります。リスト内の Compose を識別するには、その UUID を使用します。

  4. Compose プロセスが完了したら、作成されたイメージファイルをダウンロードします。

    # composer-cli compose image UUID

    UUID は、前の手順で示した UUID 値に置き換えます。

検証

イメージを作成したら、次のコマンドを使用してイメージ作成の進行状況を確認できます。

  • イメージのメタデータをダウンロードして、 Compose 用のメタデータの .tar ファイルを取得します。

    $ sudo composer-cli compose metadata UUID
  • イメージのログをダウンロードします。

    $ sudo composer-cli compose logs UUID

    このコマンドは、イメージ作成のログを含む .tar ファイルを作成します。ログが空の場合は、ジャーナルを確認できます。

  • ジャーナルを確認してください。

    $ journalctl | grep osbuild
  • イメージのマニフェストを確認します。

    $ sudo cat /var/lib/osbuild-composer/jobs/job_UUID.json

    ジャーナルで job_UUID .json を見つけることができます。

4.6. RHEL Image Builder コマンドラインの基本的なコマンド

RHEL Image Builder コマンドラインインターフェイスでは、以下のサブコマンドを利用できます。

ブループリント操作

利用可能なブループリント一覧の表示
# composer-cli blueprints list
TOML 形式でブループリントの内容の表示
# composer-cli blueprints show <BLUEPRINT-NAME>
TOML 形式のブループリントの内容を BLUEPRINT-NAME.toml ファイルに保存 (エクスポート)
# composer-cli blueprints save <BLUEPRINT-NAME>
ブループリントの削除
# composer-cli blueprints delete <BLUEPRINT-NAME>
TOML 形式のブループリントファイルを RHEL Image Builder へプッシュ (インポート)
# composer-cli blueprints push <BLUEPRINT-NAME>

ブループリントでイメージの設定

利用可能なイメージタイプをリスト表示します。
# composer-cli compose types
Compose の起動
# composer-cli compose start <BLUEPRINT> <COMPOSE-TYPE>
Compose のリスト表示
# composer-cli compose list
Compose、およびそのステータスのリスト表示
# composer-cli compose status
実行中の Compose のキャンセル
# composer-cli compose cancel <COMPOSE-UUID>
完了した Compose の削除
# composer-cli compose delete <COMPOSE-UUID>
Compose の詳細情報の表示
# composer-cli compose info <COMPOSE-UUID>
Compose のイメージファイルのダウンロード
# composer-cli compose image <COMPOSE-UUID>
サブコマンドとオプションをもっと見る
# composer-cli help

関連情報

  • composer-cli(1) man ページ

4.7. RHEL Image Builder のブループリント形式

RHEL Image Builder のブループリントは、TOML 形式のプレーンテキストとしてユーザーに表示されます。

一般的なブループリントファイルの要素には、次のものが含まれます。

ブループリントのメタデータ
name = "<BLUEPRINT-NAME>"
description = "<LONG FORM DESCRIPTION TEXT>"
version = "<VERSION>"

BLUEPRINT-NAME および LONG FORM DESCRIPTION TEXT フィールドは、ブループリントの名前と説明です。

VERSION は、セマンティックバージョニングスキームに従ったバージョン番号であり、ブループリントファイル全体で 1 つだけ存在するものです。

イメージに追加するグループ
[[groups]]
name = "group-name"

group エントリーは、イメージにインストールするパッケージのグループを説明します。グループは、次のパッケージカテゴリーを使用します。

  • 必須
  • デフォルト
  • オプション

    group-name は、anaconda-toolswidgetwheel または users などのグループの名前です。ブループリントは、必須パッケージとデフォルトパッケージをインストールします。オプションパッケージを選択するメカニズムはありません。

イメージに追加するパッケージ
[[packages]]
name = "<package-name>"
version = "<package-version>"

package-name は、httpdgdb-doc、または coreutils などのパッケージの名前です。

package-version は使用するバージョンです。このフィールドは、dnf バージョンの指定に対応します。

  • 特定のバージョンについては、8.7.0 などの正確なバージョン番号を使用してください。
  • 利用可能な最新バージョンを指定する場合は、アスタリスク (*) を使用します。
  • 最新のマイナーバージョンの場合は、8.* などの形式を使用します。

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

注記

RHEL Image Builder ツールのパッケージとモジュールの間に違いはありません。どちらも RPM パッケージの依存関係として扱われます。

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

ブループリントに次のようなカスタマイズを追加することで、イメージをカスタマイズできます。

  • RPM パッケージの追加
  • サービスの有効化
  • カーネルコマンドラインパラメーターのカスタマイズ

とりわけ、ブループリント内ではいくつかのイメージのカスタマイズを使用できます。カスタマイズを使用すると、デフォルトのパッケージでは使用できないパッケージやグループをイメージに追加できます。これらのオプションを使用するには、ブループリントでカスタマイズを設定し、それを RHEL Image Builder にインポート (プッシュ) します。

4.8.1. ディストリビューションの選択

distro フィールドを使用して、イメージの作成時またはブループリントの depsolve 時に使用するディストリビューションを選択できます。ディストリビューションを指定しない場合、ホストディストリビューションが使用されます。ディストリビューションを指定しない場合、ブループリントはホストディストリビューションを使用します。ホストオペレーティングシステムをアップグレードする場合、ディストリビューションが設定されていないブループリントでは、新しいオペレーティングシステムのバージョンを使用してイメージがビルドされます。RHEL イメージビルダーホストとは異なるオペレーティングシステムイメージをビルドすることはできません。

手順

  • 指定の RHEL イメージを常にビルドするように、ディストリビューションを使用してブループリントをカスタマイズします。

    name = "blueprint_name"
    description = "blueprint_version"
    version = "0.1"
    distro = "different_minor_version"

別のマイナーバージョンをビルドするには、"different_minor_version" を置き換えます。たとえば、RHEL 8.8 イメージをビルドする場合は、distro = "rhel-88" を使用します。RHEL 8.9 イメージでは、RHEL 8.8 以前のリリースなどのマイナーバージョンをビルドできます。

4.8.2. パッケージグループの選択

パッケージとモジュールを使用してブループリントをカスタマイズします。name 属性は必須の文字列です。version 属性はオプションの文字列で、指定しない場合はリポジトリー内の最新バージョンが使用されます。

注記

現在、osbuild-composer のパッケージとモジュールの間に違いはありません。どちらも RPM パッケージの依存関係として扱われます。

手順

  • パッケージを使用してブループリントをカスタマイズします。

    [[packages]]
    name = "package_group_name"

    "package_group_name" は、パッケージグループの名前に置き換えます。たとえば、"tmux" とします。

    [[packages]]
    name = "tmux"
    version = "2.9a"

4.8.3. イメージのホスト名の設定

customizations.hostname は、最終イメージのホスト名を設定するために使用できるオプションの文字列です。このカスタマイズはオプションであり、設定しない場合、ブループリントはデフォルトのホスト名を使用します。

手順

  • ブループリントをカスタマイズしてホスト名を設定します。

    [customizations]
    hostname = "baseimage"

4.8.4. 追加ユーザーの指定

ユーザーをイメージに追加し、必要に応じて SSH キーを設定します。このセクションのフィールドは、name を除いてすべてオプションです。

手順

  • ブループリントをカスタマイズして、イメージにユーザーを追加します。

    [[customizations.user]]
    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 は、実際の password hash に置き換えます。password hash を生成するには、次のようなコマンドを使用します。

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

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

    name の値を入力し、不要な行は省略します。

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

4.8.5. 追加グループの指定

作成されるシステムイメージのグループを指定します。name 属性と gid 属性は両方とも必須です。

手順

  • グループを使用してブループリントをカスタマイズします。

    [[customizations.group]]
    name = "GROUP-NAME"
    gid = NUMBER

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

4.8.6. 既存ユーザーの SSH キーの設定

customizations.sshkey を使用して、最終イメージ内の既存ユーザーの SSH キーを設定できます。user 属性と key 属性は両方とも必須です。

手順

  • 既存ユーザーの SSH キーを設定してブループリントをカスタマイズします。
[[customizations.sshkey]]
user = "root"
key = "PUBLIC-SSH-KEY"
注記

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

4.8.7. カーネル引数の追加

ブートローダーのカーネルコマンドラインに引数を追加できます。デフォルトでは、RHEL Image Builder はデフォルトのカーネルをイメージにビルドします。ただし、ブループリントでカーネルを設定することでカーネルをカスタマイズできます。

手順

  • デフォルト設定にカーネルの起動パラメーターオプションを追加します。

    [customizations.kernel]
    append = "KERNEL-OPTION"
  • イメージで使用するカーネル名を定義

    [customizations.kernel]
    name = "KERNEL-rt"

4.8.8. タイムゾーンと NTP の設定

ブループリントをカスタマイズして、タイムゾーンと Network Time Protocol (NTP) を設定できます。timezone 属性と ntpservers 属性は両方ともオプションの文字列です。タイムゾーンをカスタマイズしない場合、システムは 協定世界時 (UTC) を使用します。NTP サーバーを設定しない場合、システムはデフォルトのディストリビューションを使用します。

手順

  • 必要な timezonentpservers を使用してブループリントをカスタマイズします。

    [customizations.timezone]
    timezone = "TIMEZONE"
    ntpservers = "NTP_SERVER"

    以下に例を示します。

    [customizations.timezone]
    timezone = "US/Eastern"
    ntpservers = ["0.north-america.pool.ntp.org", "1.north-america.pool.ntp.org"]
    注記

    Google Cloud などの一部のイメージタイプには、すでに NTP サーバーがセットアップされています。そのようなイメージでは、選択されている環境で NTP サーバーを起動する必要があるため、これをオーバーライドすることはできません。ただし、ブループリントでタイムゾーンをカスタマイズできます。

4.8.9. ロケール設定のカスタマイズ

作成されるシステムイメージのロケール設定をカスタマイズできます。language 属性と keyboard 属性は両方とも必須です。他の多くの言語を追加できます。最初に追加する言語はプライマリー言語で、他の言語はセカンダリー言語です。

手順

  • ロケール設定を行います。
[customizations.locale]
languages = ["LANGUAGE"]
keyboard = "KEYBOARD"

以下に例を示します。

[customizations.locale]
languages = ["en_US.UTF-8"]
keyboard = "us"
  • 言語でサポートされている値を一覧表示するには、以下のコマンドを実行します。

    $ localectl list-locales
  • キーボードでサポートされている値を一覧表示するには、以下のコマンドを実行します。

    $ localectl list-keymaps

4.8.10. ファイアウォールのカスタマイズ

生成されたシステムイメージのファイアウォールを設定します。デフォルトでは、ファイアウォールは、sshd など、ポートを明示的に有効にするサービスを除き、着信接続をブロックします。

[customizations.firewall] または [customizations.firewall.services] を使用したくない場合は、属性を削除するか、空のリスト [] に設定します。デフォルトのファイアウォールセットアップのみを使用する場合は、ブループリントからカスタマイズを省略できます。

注記

Google および OpenStack テンプレートは、環境のファイアウォールを明示的に無効にします。ブループリントを設定してこの動作をオーバーライドすることはできません。

手順

  • 他のポートとサービスを開くには、次の設定を使用してブループリントをカスタマイズします。

    [customizations.firewall]
    ports = ["PORTS"]

    ここで、ports は、ポート、または開くポートとプロトコルの範囲を含む文字列のオプションのリストです。port:protocol 形式を使用してポートを設定できます。portA-portB:protocol 形式を使用してポート範囲を設定できます。以下に例を示します。

    [customizations.firewall]
    ports = ["22:tcp", "80:tcp", "imap:tcp", "53:tcp", "53:udp", "30000-32767:tcp", "30000-32767:udp"]

    /etc/services の数値ポートまたはその名前を使用して、ポートリストを有効または無効にすることができます。

  • customizations.firewall.service セクションで、どのファイアウォールサービスを有効または無効にするかを指定します。

    [customizations.firewall.services]
    enabled = ["SERVICES"]
    disabled = ["SERVICES"]
  • 利用可能なファイアウォールサービスを確認できます。

    $ firewall-cmd --get-services

    以下に例を示します。

    [customizations.firewall.services]
    enabled = ["ftp", "ntp", "dhcp"]
    disabled = ["telnet"]
    注記

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

4.8.11. サービスの有効化または無効化

システムの起動時に有効にするサービスを制御することができます。一部のイメージタイプでは、イメージが正しく機能するようにすでにサービスが有効または無効になっており、このセットアップをオーバーライドすることができません。ブループリントの [customizations.services] 設定はこれらのサービスを置き換えるものではありませんが、イメージテンプレートにすでに存在するサービスのリストにサービスを追加します。

手順

  • 起動時に有効にするサービスをカスタマイズします。

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

    以下に例を示します。

    [customizations.services]
    enabled = ["sshd", "cockpit.socket", "httpd"]
    disabled = ["postfix", "telnetd"]

4.8.12. カスタムファイルシステム設定の指定

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

  • セキュリティーベンチマークへの準拠
  • ディスク外エラーに対する保護
  • パフォーマンスの向上
  • 既存のセットアップとの整合性
注記

OSTree イメージには、読み取り専用などの独自のマウントルールがあるため、ファイルシステムのカスタマイズは OSTree システムではサポートされません。

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

  • / - ルートマウントポイント
  • /var
  • /home
  • /opt
  • /srv/
  • /usr
  • /app
  • /data
  • /boot - ブループリントは、RHEL 8.7 および RHEL 9.1 以降で /boot のカスタマイズをサポートしています。
注記

マウントポイントのカスタマイズは、RHEL 8.5 ディストリビューション以降、CLI を使用した場合のみサポートされます。以前のディストリビューションでは、root パーティションをマウントポイントとして指定し、size 引数をイメージ size のエイリアスとして指定することしかできません。RHEL 8.6 以降、osbuild-composer-46.1-1.el8 RPM 以降のバージョンでは、物理パーティションは使用できなくなり、ファイルシステムのカスタマイズによって論理ボリュームが作成されます。

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

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

カスタムファイルブループリントのカスタマイズを使用して、新しいファイルを作成したり、既存のファイルを置き換えたりできます。指定するファイルの親ディレクトリーが存在している必要があります。存在しない場合、イメージのビルドが失敗します。[[customizations.directories]] のカスタマイズで親ディレクトリーを指定して、親ディレクトリーが存在することを確認してください。

警告

ファイルのカスタマイズを他のブループリントのカスタマイズと組み合わせると、他のカスタマイズの機能に影響が生じたり、現在のファイルのカスタマイズがオーバーライドされる可能性があります。

[[customizations.files]] ブループリントのカスタマイズを使用すると、次のことが可能になります。

  • 新しいテキストファイルを作成する。
  • 既存のファイルを変更する。警告: これにより、既存のコンテンツが上書きされる可能性があります。
  • 作成するファイルのユーザーとグループの所有権を設定する。
  • モード許可を 8 進数形式で設定する。

以下のファイルは作成または置き換えることはできません。

  • /etc/fstab
  • /etc/shadow
  • /etc/passwd
  • /etc/group

[[customizations.files]] および [[customizations.directories]] ブループリントのカスタマイズを使用して、イメージ内にカスタマイズされたファイルとディレクトリーを作成できます。これらのカスタマイズは、/etc ディレクトリーでのみ使用できます。

注記

これらのブループリントのカスタマイズは、OSTree コミットをデプロイするイメージタイプ (edge-raw-imageedge-installeredge-simplified-installer など) を除く、すべてのイメージタイプでサポートされます。

警告

modeuser、または group がすでに設定されているイメージ内にすでに存在するディレクトリーパスで customizations.directories を使用すると、イメージビルドで既存のディレクトリーの所有権または権限の変更を防ぐことができません。

[[customizations.directory]] ブループリントのカスタマイズを使用すると、以下を行うことができます。

  • 新しいディレクトリーを作成する。
  • 作成するディレクトリーのユーザーとグループの所有権を設定する。
  • ディレクトリーモードのパーミッションを 8 進数形式で設定する。
  • 必要に応じて親ディレクトリーを作成する。

[[customizations.files]] ブループリントのカスタマイズを使用すると、次のことが可能になります。

  • 新しいテキストファイルを作成する。
  • 既存のファイルを変更する。警告: これにより、既存のコンテンツが上書きされる可能性があります。
  • 作成するファイルのユーザーとグループの所有権を設定する。
  • モード許可を 8 進数形式で設定する。
注記

以下のファイルは作成または置き換えることはできません。

  • /etc/fstab
  • /etc/shadow
  • /etc/passwd
  • /etc/group

手順

  • ブループリントのファイルシステム設定をカスタマイズします。

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

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

    [[customizations.filesystem]]
    mountpoint = "/var"
    size = 1073741824
  • 単位を使用してマウントポイントのサイズを定義します。以下に例を示します。

    [[customizations.filesystem]]
    mountpoint = "/opt"
    size = "20 GiB"
    [[customizations.filesystem]]
    mountpoint = "/boot"
    size = "1 GiB"
  • [[customizations.directories]] を使用して、イメージ用にカスタマイズされたディレクトリーを /etc ディレクトリーの下に作成します。

    [[customizations.directories]]
    path = "/etc/directory_name"
    mode = "octal_access_permission"
    user = "user_string_or_integer"
    group = "group_string_or_integer"
    ensure_parents = boolean

    ブループリントの各エントリーについて説明します。

  • path - 必須 - 作成するディレクトリーへのパスを入力します。/etc ディレクトリー下の絶対パスである必要があります。
  • mode - オプション - ディレクトリーのアクセスパーミッションを 8 進数形式で設定します。パーミッションを指定しない場合、デフォルトで 0755 に設定されます。先頭のゼロは任意です。
  • user - オプション - ユーザーをディレクトリーの所有者として設定します。ユーザーを指定しない場合は、デフォルトで root に設定されます。ユーザーは文字列または整数として指定できます。
  • group - オプション - グループをディレクトリーの所有者として設定します。グループを指定しない場合は、デフォルトで root になります。グループは文字列または整数として指定できます。
  • ensure_parents - オプション - 必要に応じて親ディレクトリーを作成するかどうかを指定します。値を指定しない場合は、デフォルトで false に設定されます。
  • [[customizations.directories]] を使用して、イメージ用にカスタマイズされたファイルを /etc ディレクトリーの下に作成します。

    [[customizations.files]]
    path = "/etc/directory_name"
    mode = "octal_access_permission"
    user = "user_string_or_integer"
    group = "group_string_or_integer"
    data = "Hello world!"

    ブループリントの各エントリーについて説明します。

  • path - 必須 - 作成するファイルへのパスを入力します。/etc ディレクトリー下の絶対パスである必要があります。
  • mode - オプション - ファイルのアクセスパーミッションを 8 進数形式で設定します。パーミッションを指定しない場合、デフォルトで 0644 に設定されます。先頭のゼロは任意です。
  • user - オプション - ユーザーをファイルの所有者として設定します。ユーザーを指定しない場合は、デフォルトで root に設定されます。ユーザーは文字列または整数として指定できます。
  • group - オプション - グループをファイルの所有者として設定します。グループを指定しない場合は、デフォルトで root になります。グループは文字列または整数として指定できます。
  • data - オプション - プレーンテキストファイルの内容を指定します。コンテンツを指定しない場合は、空のファイルが作成されます。

4.9. RHEL Image Builder によってインストールされるパッケージ

RHEL Image Builder を使用してシステムイメージを作成すると、システムは一連のベースパッケージグループをインストールします。

注記

ブループリントにコンポーネントを追加する場合は、追加したコンポーネント内のパッケージが他のパッケージコンポーネントと競合しないようにしてください。そうしないと、システムは依存関係を解決できず、カスタマイズされたイメージの作成に失敗します。次のコマンドを実行して、パッケージ間に競合がないかどうかを確認できます。

# composer-cli blueprints depsolve BLUEPRINT-NAME

デフォルトでは、RHEL Image Builder は Core グループをパッケージの基本リストとして使用します。

表4.1 イメージタイプの作成をサポートするデフォルトパッケージ

イメージタイプデフォルトパッケージ

ami

checkpolicy、chrony、cloud-init、cloud-utils-growpart、@Core、dhcp-client、gdisk、insights-client、kernel、langpacks-en、net-tools、NetworkManager、redhat-release、redhat-release-eula、rng-tools、rsync、selinux-policy-targeted、tar、yum-utils

openstack

@core、langpacks-en

qcow2

@core, chrony, dnf, kernel, yum, nfs-utils, dnf-utils, cloud-init, python3-jsonschema, qemu-guest-agent, cloud-utils-growpart, dracut-norescue, tar, tcpdump, rsync, dnf-plugin-spacewalk, rhn-client-tools, rhnlib, rhnsd, rhn-setup, NetworkManager, dhcp-client, cockpit-ws, cockpit-system, subscription-manager-cockpit, redhat-release, redhat-release-eula, rng-tools, insights-client

tar

policycoreutils、selinux-policy-targeted

vhd

@core、langpacks-en

vmdk

@core、chrony、cloud-init、firewalld、langpacks-en、open-vm-tools、selinux-policy-targeted

edge-commit

attr、audit、basesystem、bash、bash-completion、chrony、clevis、clevis-dracut、clevis-luks、container-selinux、coreutils、criu、cryptsetup、curl、dnsmasq、dosfstools、dracut-config-generic、dracut-network、e2fsprogs、firewalld、fuse-overlayfs、fwupd、glibc、glibc-minimal-langpack、gnupg2、greenboot、gzip、hostname、ima-evm-utils、iproute、iptables、iputils、keyutils、less、lvm2、NetworkManager、NetworkManager-wif、NetworkManager-wwan、nss-altfiles、openssh-clients、openssh-server、passwd、pinentry、platform-python、podman、policycoreutils、policycoreutils-python-utils、polkit、procps-ng、redhat-release、rootfiles、rpm、rpm-ostree、rsync、selinux-policy-targeted、setools-console、setup、shadow-utils、shadow-utils、skopeo、slirp4netns、sudo、systemd、tar、tmux、traceroute、usbguard、util-linux、vim-minimal、wpa_supplicant、xz

edge-container

dnf、dosfstools、e2fsprogs、glibc、lorax-templates-generic、lorax-templates-rhel、lvm2、policycoreutils、python36、python3-iniparse、qemu-img、selinux-policy-targeted、systemd、tar、xfsprogs、xz

edge-installer

aajohan-comfortaa-fonts、abattis-cantarell-fonts、alsa-firmware、alsa-tools-firmware、anaconda、anaconda-install-env-deps、anaconda-widgets、audit、bind-utils、bitmap-fangsongti-fonts、bzip2、cryptsetup、dbus-x11、dejavu-sans-fonts、dejavu-sans-mono-fonts、device-mapper-persistent-data、dnf、dump、ethtool、fcoe-utils、ftp、gdb-gdbserver、gdisk、gfs2-utils、glibc-all-langpacks、google-noto-sans-cjk-ttc-fonts、gsettings-desktop-schemas、hdparm、hexedit、initscripts、ipmitool、iwl3945-firmware、iwl4965-firmware、iwl6000g2a-firmware、iwl6000g2b-firmware、jomolhari-fonts、kacst-farsi-fonts、kacst-qurn-fonts、kbd、kbd-misc、kdump-anaconda-addon、khmeros-base-fonts、libblockdev-lvm-dbus、libertas-sd8686-firmware、libertas-sd8787-firmware、libertas-usb8388-firmware、libertas-usb8388-olpc-firmware、libibverbs、libreport-plugin-bugzilla、libreport-plugin-reportuploader、libreport-rhel-anaconda-bugzilla、librsvg2、linux-firmware、lklug-fonts、lldpad、lohit-assamese-fonts、lohit-bengali-fonts、lohit-devanagari-fonts、lohit-gujarati-fonts、lohit-gurmukhi-fonts、lohit-kannada-fonts、lohit-odia-fonts、lohit-tamil-fonts、lohit-telugu-fonts、lsof、madan-fonts、metacity、mtr、mt-st、net-tools、nmap-ncat、nm-connection-editor、nss-tools、openssh-server、oscap-anaconda-addon、pciutils、perl-interpreter、pigz、python3-pyatspi、rdma-core、redhat-release-eula、rpm-ostree、rsync、rsyslog、sg3_utils、sil-abyssinica-fonts、sil-padauk-fonts、sil-scheherazade-fonts、smartmontools、smc-meera-fonts、spice-vdagent、strace、system-storage-manager、thai-scalable-waree-fonts、tigervnc-server-minimal、tigervnc-server-module、udisks2、udisks2-iscsi、usbutils、vim-minimal、volume_key、wget、xfsdump、xorg-x11-drivers、xorg-x11-fonts-misc、xorg-x11-server-utils、xorg-x11-server-Xorg、xorg-x11-xauth

edge-simplified-installer

attr、basesystem、binutils、bsdtar、clevis-dracut、clevis-luks、cloud-utils-growpart、coreos-installer、coreos-installer-dracut、coreutils、device-mapper-multipath、dnsmasq、dosfstools、dracut-live、e2fsprogs、fcoe-utils、fdo-init、gzip、ima-evm-utils、iproute、iptables、iputils、iscsi-initiator-utils、keyutils、lldpad、lvm2、passwd、policycoreutils、policycoreutils-python-utils、procps-ng、rootfiles、setools-console、sudo、traceroute、util-linux

image-installer

anaconda-dracut、curl、dracut-config-generic、dracut-network、hostname、iwl100-firmware、iwl1000-firmware、iwl105-firmware、iwl135-firmware、iwl2000-firmware、iwl2030-firmware、iwl3160-firmware、iwl5000-firmware、iwl5150-firmware、iwl6000-firmware、iwl6050-firmware、iwl7260-firmware、kernel、less、nfs-utils、openssh-clients、ostree、plymouth、prefixdevname、rng-tools、rpcbind、selinux-policy-targeted、systemd、tar、xfsprogs、xz

edge-raw-image

dnf、dosfstools、e2fsprogs、glibc、lorax-templates-generic、lorax-templates-rhel、lvm2、policycoreutils、python36、python3-iniparse、qemu-img、selinux-policy-targeted、systemd、tar、xfsprogs、xz

gce

@core、langpacks-en、acpid、dhcp-client、dnf-automatic、net-tools、python3、rng-tools、tar、vim

4.10. カスタムイメージで有効なサービス

Image Builder を使用してカスタムイメージを設定する場合、イメージが使用するデフォルトのサービスは次のように決定されます。

  • osbuild-composer ユーティリティーを使用する RHEL リリース
  • イメージの種類

たとえば、ami イメージタイプは、デフォルトで sshdchronyd、および cloud-init サービスを有効にします。これらのサービスが有効になっていない場合、カスタムイメージは起動しません。

表4.2 イメージタイプの作成をサポートするために有効になっているサービス

イメージタイプデフォルトで有効化されているサービス

ami

sshd, cloud-init, cloud-init-local, cloud-config, cloud-final

openstack

sshd, cloud-init, cloud-init-local, cloud-config, cloud-final

qcow2

cloud-init

rhel-edge-commit

デフォルトでは、追加のサービスは有効になりません。

tar

デフォルトでは、追加のサービスは有効になりません。

vhd

sshd, chronyd, waagent, cloud-init, cloud-init-local, cloud-config, cloud-final

vmdk

sshd、chronyd、vmtoolsd、cloud-init

注記: システムの起動時に有効にするサービスをカスタマイズできます。ただし、カスタマイズは、前述のイメージタイプに対してデフォルトで有効になっているサービスを上書きしません。

第5章 RHEL Image Builder Web コンソールインターフェイスを使用したシステムイメージの作成

RHEL Image Builder は、カスタムのシステムイメージを作成するツールです。RHEL Image Builder を制御してカスタムシステムイメージを作成する場合は、Web コンソールインターフェイスを使用できます。ただし、コマンドラインインターフェイス の方が提供している機能が多いため、コマンドラインインターフェイスを使用することが推奨されます。

5.1. RHEL Web コンソールでの RHEL Image Builder ダッシュボードへのアクセス

RHEL Web コンソール用の cockpit-composer プラグインを使用すると、グラフィカルインターフェイスを使用して Image Builder のブループリントと設定を管理できます。

前提条件

  • システムへの root アクセス権限がある。
  • RHEL Image Builder がインストールされている。
  • cockpit-composer パッケージがインストールされている。

手順

  1. ホスト上で、Web ブラウザーで https://<_localhost_>:9090/ を開きます。
  2. root ユーザーとして Web コンソールにログインします。
  3. RHEL Image Builder のコントロールを表示するには、ウィンドウの左上隅にある Image Builder ボタンをクリックします。

    RHEL Image Builder ダッシュボードが開き、既存のブループリントがあればそれがリストされます。

5.2. Web コンソールインターフェイスでのブループリントの作成

ブループリントの作成は、カスタマイズされた RHEL システムイメージを作成する前に必要な手順です。すべてのカスタマイズはオプションです。

注記

これらのブループリントのカスタマイズは、Red Hat Enterprise Linux 9.2 以降のバージョンおよび Red Hat Enterprise Linux 8.8 以降のバージョンで利用できます。

前提条件

手順

  1. 右上隅にある Create Blueprint をクリックします。

    ブループリントの名前と説明のフィールドを含むダイアログウィザードが開きます。

  2. Details ページで以下を行います。

    1. ブループリントの名前と、必要に応じてその説明を入力します。
    2. Next をクリックします。
  3. オプション: Packages ページで、以下を行います。

    1. Available packages の検索で、パッケージ名を入力します。
    2. > ボタンをクリックして Chosen packages フィールドに移動します。
    3. 前の手順を繰り返して、必要な数のパッケージを検索して含めます。
    4. Next をクリックします。

      注記

      特に指定がない限り、これらのカスタマイズはすべてオプションです。

  4. Kernel ページで、カーネル名とコマンドライン引数を入力します。
  5. File system ページで、お使いのイメージファイルシステムに合わせて Use automatic partitioning または Manually configure partitions を選択します。パーティションを手動で設定するには、次の手順を実行します。

    1. Manually configure partitions ボタンをクリックします。

      Configure partitions セクションが開き、Red Hat 標準およびセキュリティーガイドに基づく設定が表示されます。

    2. ドロップダウンメニューから、パーティションを設定するための詳細を入力します。

      1. Mount point フィールドに、以下のマウントポイントタイプオプションのいずれかを選択します。

        • / - ルートマウントポイント
        • /var
        • /home
        • /opt
        • /srv/
        • /usr
        • /app
        • /data
        • /tmp
        • /usr/local

          /tmp などの追加のパスを Mount point に追加することもできます。例: 接頭辞 /var と、追加パス /tmp で、/var/tmp になります。

          注記

          選択した Mount point のタイプに応じて、ファイルシステムのタイプが xfs に変わります。

      2. ファイルシステムの Minimum size partition フィールドに、必要な最小パーティションサイズを入力します。Minimum size ドロップダウンメニューでは、GiBMiBKiB などの一般的なサイズ単位を使用できます。デフォルトの単位は GiB です。

        注記

        Minimum size とは、作業用イメージの作成には小さすぎる場合にも RHEL Image Builder がパーティションサイズを増加できるという意味です。

    3. さらにパーティションを追加するには、Add partition ボタンをクリックします。エラーメッセージ Duplicate partitions: Only one partition at each mount point can be created. が表示された場合は、以下を行います。

      1. Remove ボタンをクリックして、重複したパーティションを削除します。
      2. 作成するパーティションの新しいマウントポイントを選択します。
    4. パーティションの設定が完了したら、Next をクリックします。
  6. Services ページで、サービスを有効または無効にします。

    1. 有効または無効にするサービス名をコンマまたはスペースで区切るか、Enter キーを押して入力します。Next をクリックします。
  7. Firewall ページで、ファイアウォールを設定します。

    1. Ports と、有効または無効にするファイアウォールサービスを入力します。
    2. Add zone ボタンをクリックして、各ゾーンのファイアウォールルールを個別に管理します。Next をクリックします。
  8. Users ページで、以下の手順に従ってユーザーを追加します。

    1. Add user をクリックします。
    2. Usernamepassword、および SSH key を入力します。Server administrator チェックボックスをクリックして、ユーザーを特権ユーザーとしてマークすることもできます。Next をクリックします。
  9. Groups ページで、次の手順を実行してグループを追加します。

    1. Add groups ボタンをクリックします。

      1. Group nameGroup ID を入力します。グループをさらに追加できます。Next をクリックします。
  10. SSH keys ページで、キーを追加します。

    1. Add key ボタンをクリックします。

      1. SSH キーを入力します。
      2. User を入力します。Next をクリックします。
  11. Timezone ページで、タイムゾーンを設定します。

    1. Timezone フィールドに、システムイメージに追加するタイムゾーンを入力します。たとえば、タイムゾーン形式 "US/Eastern" を追加します。

      タイムゾーンを設定しない場合、システムはデフォルトとして協定世界時 (UTC) を使用します。

    2. NTP サーバーを入力します。Next をクリックします。
  12. Locale ページで、以下の手順を実行します。

    1. Keyboard 検索フィールドに、システムイメージに追加するパッケージ名を入力します。たとえば、["en_US.UTF-8"] と入力します。
    2. Languages 検索フィールドに、システムイメージに追加するパッケージ名を入力します。たとえば、"us" と入力します。Next をクリックします。
  13. Others ページで、次の手順を実行します。

    1. Hostname フィールドに、システムイメージに追加するホスト名を入力します。ホスト名を追加しない場合、オペレーティングシステムによってホスト名が決定されます。
    2. Simplifier インストーラーイメージの場合のみ必須: Installation Devices フィールドに、システムイメージの有効なノードを入力します。たとえば、dev/sda1 と入力します。Next をクリックします。
  14. FIDO イメージをビルドする場合のみ必須: FIDO device onboarding ページで、次の手順を実行します。

    1. Manufacturing server URL フィールドに、次の情報を入力します。

      1. DIUN public key insecure フィールドに、セキュアでない公開鍵を入力します。
      2. DIUN public key hash フィールドに、公開鍵ハッシュを入力します。
      3. DIUN public key root certs フィールドに、公開鍵ルート証明書を入力します。Next をクリックします。
  15. OpenSCAP ページで、次の手順を実行します。

    1. Datastream フィールドに、システムイメージに追加する datastream 修復手順を入力します。
    2. Profile ID フィールドに、システムイメージに追加する profile_id セキュリティープロファイルを入力します。Next をクリックします。
  16. Ignition イメージをビルドする場合のみ必須: Ignition ページで、次の手順を実行します。

    1. Firstboot URL フィールドに、システムイメージに追加するパッケージ名を入力します。
    2. Embedded Data フィールドに、ファイルをドラッグまたはアップロードします。Next をクリックします。
  17. .Review ページで、ブループリントの詳細を確認します。Create をクリックします。

RHEL Image Builder ビューが開き、既存のブループリントのリストが表示されます。

5.3. RHEL Image Builder Web コンソールインターフェイスでのブループリントのインポート

既存のブループリントをインポートして使用できます。システムがすべての依存関係を自動的に解決します。

前提条件

  • ブラウザーの Web コンソールから RHEL Image Builder アプリケーションを開いている。
  • RHEL Image Builder Web コンソールインターフェイスで使用するためにインポートするブループリントがある。

手順

  1. RHEL Image Builder ダッシュボードで、Import blueprint をクリックします。Import blueprint が開きます。
  2. Upload フィールドから、既存のブループリントをドラッグまたはアップロードします。TOMLJSON のどちらかの形式のブループリントを使用できます。
  3. Import をクリックします。ダッシュボードに、インポートしたブループリントがリストされます。

検証

インポートしたブループリントをクリックすると、インポートしたブループリントのすべてのカスタマイズを含むダッシュボードにアクセスできます。

  • インポートしたブループリント用に選択されているパッケージを確認するには、Packages タブに移動します。

    • すべてのパッケージの依存関係を一覧表示するには、All をクリックします。リストは検索可能で、並べ替えることもできます。

次のステップ

  • オプション: カスタマイズを変更するには、以下を実行します。

    • Customizations ダッシュボードから、変更するカスタマイズをクリックします。必要に応じて、Edit blueprint をクリックして、利用可能なすべてのカスタマイズオプションに移動できます。

5.4. RHEL Image Builder Web コンソールインターフェイスからのブループリントのエクスポート

ブループリントをエクスポートして、別のシステムでカスタマイズを使用できます。ブループリントは TOML または JSON 形式でエクスポートできます。どちらの形式も CLI だけでなく API インターフェイスでも使用できます。

前提条件

  • ブラウザーの Web コンソールから RHEL Image Builder アプリケーションを開いている。
  • エクスポートするブループリントがある。

手順

  1. Image Builder ダッシュボードで、エクスポートするブループリントを選択します。
  2. Export blueprint をクリックします。Export blueprint が開きます。
  3. Export ボタンをクリックしてブループリントをファイルとしてダウンロードするか、Copy ボタンをクリックしてブループリントをクリップボードにコピーします。

    1. 必要に応じて、Copy ボタンをクリックしてブループリントをコピーします。

検証

  • エクスポートしたブループリントをテキストエディターで開き、検査して確認します。

5.5. Web コンソールインターフェイスで RHEL Image Builder を使用してシステムイメージを作成する

次の手順を実行すると、ブループリントからカスタマイズされた RHEL システムイメージを作成できます。

前提条件

  • ブラウザーの Web コンソールから RHEL Image Builder アプリケーションを開いている。
  • ブループリントを作成している。

手順

  1. RHEL Image Builder ダッシュボードで、blueprint タブをクリックします。
  2. ブループリントのテーブルで、イメージをビルドするブループリントを見つけます。
  3. 選択したブループリントの右側で、Create Image をクリックします。Create image ダイアログウィザードが開きます。
  4. Image output ページで、次の手順を実行します。

    1. Select a blueprint リストから、必要なイメージのタイプを選択します。
    2. Image output type リストから、必要なイメージの出力タイプを選択します。

      選択したイメージの種類に応じて、さらに詳細を追加する必要があります。

  5. Next をクリックします。
  6. Review ページで、イメージの作成に関する詳細を確認し、Create image をクリックします。

    イメージのビルドが開始され、完了するまでに最大 20 分かかります。

検証

イメージのビルドが完了したら、次のことが可能になります。

  • イメージをダウンロードします。

    • RHEL Image Builder ダッシュボードで、Node options (⫶) メニューをクリックし、Download image を選択します。
  • イメージのログをダウンロードして要素を検査し、問題がないかどうかを確認します。

    • RHEL Image Builder ダッシュボードで、Node options (⫶) メニューをクリックし、Download logs を選択します。

第6章 RHEL Image Builder を使用した異なるリリースからのシステムイメージの作成

Image Builder を使用して、RHEL 8.8 と RHEL 8.7 のように、ホストとは異なる複数の RHEL マイナーリリースのイメージを作成できます。その際に、リリースディストリビューションフィールドを設定してソースシステムリポジトリーを追加できます。また、正しいリリースディストリビューションフィールドを設定してブループリントを作成することもできます。

また、古い形式の既存のブループリントまたはソースシステムリポジトリーがある場合は、正しいリリースディストリビューションフィールドを設定して、新しいブループリントを作成できます。

  • サポートされているリリースディストリビューションをリスト表示するには、以下のコマンドを実行します。

    $ composer-cli distros list

    出力には、サポートされるリリースディストリビューション名のリストが表示されます。

    rhel-8
    rhel-84
    rhel-85
    rhel-86
    rhel-87
    rhel-88
    rhel-89
    注記

    RHEL での CentOS イメージのビルドなど、ディストリビューションをまたがるイメージのビルドはサポートされていません。

6.1. CLI での異なるディストリビューションを使用したイメージの作成

RHEL Image Builder CLI でイメージを作成するときに使用するディストリビューションを選択するには、ブループリントで distro フィールドを設定する必要があります。そのためには、以下の手順に従います。

手順

新しいブループリントを作成する場合:
  1. ブループリントを作成します。以下に例を示します。
name = "<blueprint_name>"
description = "<image-description>"
version = "0.0.1"
modules = []
groups = []
distro = "<distro-version>"

distro フィールドを "rhel-88" に設定することで、ホストで実行しているバージョンに関係なく、常に RHEL 8.8 イメージがビルドされるようになります。

注記

distro フィールドが空の場合は、ホストと同じディストリビューションを使用します。

既存のブループリントを更新する場合:
  1. ローカルのテキストファイルに既存のブループリントを保存 (エクスポート) します。
# composer-cli blueprints save EXISTING-BLUEPRINT
  1. 既存のブループリントファイルを任意のテキストエディターで編集し、任意のディストリビューションを distro フィールドに設定します。次に例を示します。

    name = "blueprint_84"
    description = "A 8.8 base image"
    version = "0.0.1"
    modules = []
    groups = []
    distro = "rhel-88"
  2. ファイルを保存してエディターを閉じます。
  3. ブループリントを RHEL Image Builder にプッシュ (インポート) します。

    # composer-cli blueprints push EXISTING-BLUEPRINT.toml
  4. イメージの作成を開始します。

    # composer-cli compose start BLUEPRINT-NAME IMAGE-TYPE

    Compose が完成するまで待ちます。

  5. Compose のステータスを確認します。

    # composer-cli compose status

    Compose が完了すると、ステータスが FINISHED になります。リスト内の Compose をその UUID で識別します。

  6. 作成されたイメージファイルをダウンロードします。

    # composer-cli compose image UUID

    UUID は、前の手順で示した UUID 値に置き換えます。

6.2. 特定のディストリビューションのシステムリポジトリーの使用

依存関係を解決しイメージをビルドするときにシステムリポジトリーソースが使用する、ディストリビューション文字列のリストを指定できます。そのためには、以下の手順に従います。

手順

  • たとえば、次の構造の TOML ファイルを作成します。

    check_gpg = true
    check_ssl = true
    distros = ["<distro-version>"]
    id = "<image-id>"
    name = "<image-name>_"
    system = false
    type = "<image-type>"
    url = "\http://local/repos/rhel-<distro-version>_/<project-repo>/"

    以下に例を示します。

    check_gpg = true
    check_ssl = true
    distros = ["rhel-84"]
    id = "rhel-84-local"
    name = "local packages for rhel-84"
    system = false
    type = "yum-baseurl"
    url = "\http://local/repos/rhel-84/projectrepo/"

第7章 RHEL Image Builder を使用したブート ISO インストーラーイメージの作成

RHEL Image Builder を使用して、起動可能な ISO インストーラーイメージを作成できます。これらのイメージは、ルートファイルシステムを含む .tar ファイルで構成されます。起動可能な ISO イメージを使用して、ファイルシステムをベアメタルサーバーにインストールすることができます。

RHEL Image Builder は、ルートファイルシステムを含むブート ISO を作成するマニフェストを作成します。ISO イメージを作成するには、イメージタイプ image-installer を選択します。RHEL Image Builder は、次の内容の .tar ファイルをビルドします。

  • 標準の Anaconda インストーラー ISO
  • 組み込みの RHEL システム tar ファイル
  • 最小限のデフォルト要件でコミットをインストールするデフォルトのキックスタートファイル

作成されたインストーラー ISO イメージには、ベアメタルサーバーに直接インストールできる設定済みのシステムイメージが含まれています。

7.1. RHEL Image Builder CLI を使用したブート ISO インストーラーイメージの作成

RHEL Image Builder コマンドラインインターフェイスを使用して、カスタマイズしたブート ISO インストーラーイメージを作成できます。その結果、Image Builder は、オペレーティングシステム用にインストールできる .tar ファイルを含む .iso ファイルをビルドします。.iso ファイルは、Anaconda を起動し、tar ファイルをインストールしてシステムをセットアップするように設定されています。作成した ISO イメージファイルをハードディスク上で使用したり、HTTP ブートや USB インストールなどで仮想マシンを起動したりできます。

警告

インストーラー (.iso) イメージタイプはパーティションのカスタマイズを受け入れません。ファイルシステムのカスタマイズを手動で設定しようとしても、インストーラーイメージによって構築されたシステムには適用されません。RHEL イメージビルダーファイルシステムのカスタマイズで構築された ISO イメージをマウントすると、キックスタートでエラーが発生し、インストールが自動的に再起動しません。詳細については、イメージビルダーによって生成された RHEL ISO インストールを自動化する および イメージビルダーによって生成された RHEL ISO インストールを自動化する を参照してください。

前提条件

手順

  1. ISO イメージを作成します。

    # composer-cli compose start BLUEPRINT-NAME image-installer
    • BLUEPRINT-NAME は作成したブループリントの名前です。
    • image-installer はイメージタイプです。

      Compose プロセスはバックグラウンドで開始し、Compose の UUID が表示されます。Compose が完成するまで待ちます。これは数分の時間がかかる可能性があります。

  2. Compose のステータスを確認します。

    # composer-cli compose status

    Compose が完了すると、ステータスが FINISHED となります。

  3. リスト内の Compose をその UUID で識別します。

    # composer-cli compose list
  4. Compose が完了したら、作成したイメージファイルをカレントディレクトリーにダウンロードします。

    # composer-cli compose image UUID

    UUID は、前の手順で取得した UUID 値に置き換えます。

    RHEL Image Builder は .tar ファイルを含む .iso ファイルをビルドします。.tar ファイルは、オペレーティングシステム用にインストールされるイメージです。.iso は、Anaconda を起動し、tar ファイルをインストールしてシステムをセットアップするように設定されています。

次のステップ

イメージファイルをダウンロードしたディレクトリーで、以下を実行します。

  1. ダウンロードした .iso イメージを見つけます。
  2. ISO をマウントします。

    $ mount -o ro path_to_ISO /mnt

    .tar ファイルは /mnt/liveimg.tar.gz ディレクトリーにあります。

  3. .tar ファイルの内容をリスト表示します。

    $ tar ztvf /mnt/liveimg.tar.gz

7.2. GUI で RHEL Image Builder を使用してブート ISO インストーラーイメージを作成する

RHEL Image Builder GUI を使用して、カスタマイズしたブート ISO インストーラーイメージをビルドできます。作成された ISO イメージファイルは、ハードディスク上で使用することも、仮想マシンで起動することもできます。たとえば、HTTP ブートや USB インストールなどで起動できます。

警告

インストーラー (.iso) イメージタイプはパーティションのカスタマイズを受け入れません。ファイルシステムのカスタマイズを手動で設定しようとしても、インストーラーイメージによって構築されたシステムには適用されません。RHEL イメージビルダーファイルシステムのカスタマイズで構築された ISO イメージをマウントすると、キックスタートでエラーが発生し、インストールが自動的に再起動しません。詳細については、イメージビルダーによって生成された RHEL ISO インストールを自動化する および イメージビルダーによって生成された RHEL ISO インストールを自動化する を参照してください。

前提条件

手順

  1. RHEL Image Builder のダッシュボードで、イメージのビルドに使用するブループリントを見つけます。必要に応じて、ブループリント名またはその一部を左上の検索ボックスに入力し、Enter をクリックします。
  2. ブループリントの右側で、対応する Create Image ボタンをクリックします。

    Create image ダイアログウィザードが開きます。

  3. Create image ダイアログウィザードで:

    1. Image Type リストで、"RHEL Installer (.iso)" を選択します。
    2. Next をクリックします。
    3. Review タブで Create をクリックします。

      RHEL Image Builder は、RHEL .iso イメージの Compose をキューに追加します。

      プロセスが完了すると、Image build complete のステータスが表示されます。RHEL Image Builder は ISO イメージを作成します。

検証

イメージが正常に作成されたら、ダウンロードできます。

  1. Download をクリックして、RHEL インストーラー (.iso) イメージをシステムに保存します。
  2. RHEL インストーラー (.iso) イメージをダウンロードしたフォルダーに移動します。
  3. ダウンロードした .tar イメージを見つけます。
  4. RHEL インストーラー (.iso) イメージコンテンツをデプロイメントします。

    $ tar -xf content.tar

7.3. 起動可能な ISO をメディアにインストールして起動する

RHEL Image Builder を使用して作成した起動可能な ISO イメージをベアメタルシステムにインストールします。

前提条件

手順

  1. dd ツールを使用して、ブート可能な ISO イメージを USB ドライブに直接書き込みます。以下に例を示します。

    dd if=installer.iso of=/dev/sdX

    ここで、installer.iso は ISO イメージファイル名、/dev/sdX は USB フラッシュドライブのデバイスパスです。

  2. 起動するコンピューターの USB ポートにフラッシュドライブを挿入します。
  3. USB フラッシュドライブから ISO イメージを起動します。

    インストール環境が開始したら、デフォルトの Red Hat Enterprise Linux インストールと同様に、インストールの手動完了が必要になることがあります。

第8章 RHEL Image Builder OpenSCAP 統合によるハードニング済みイメージの作成

オンプレミスの RHEL Image Builder は OpenSCAP 統合をサポートしています。この統合により、ハードニング済みの RHEL イメージの作成が可能になります。ブループリントを設定すると、次のアクションを実行できます。

  • 事前定義されたセキュリティープロファイルのセットを使用したカスタマイズ
  • パッケージまたはアドオンファイルのセットの追加
  • 環境により適した、選択したプラットフォームにデプロイ可能なカスタム RHEL イメージのビルド

Red Hat は、現在のデプロイメントガイドラインを満たすことができるように、システムを構築するときに選択できるセキュリティーハードニングプロファイルの定期的に更新されたバージョンを提供します。

警告

RHEL Image Builder には、FIPS ブートモードのサポートが含まれていません。したがって、DISA STIG など、FIPS モードを有効にする必要がある OpenSCAP プロファイルはサポートされません。

8.1. キックスタートイメージとハードニング済みイメージの違い

キックスタートファイルを使用した従来のイメージ作成では、インストールする必要があるパッケージを選択し、システムが脆弱性の影響を受けないようにする必要があります。RHEL Image Builder OpenSCAP 統合により、セキュリティーが強化されたイメージをビルドできます。イメージビルドプロセス中、OSBuild oscap remediation stage は、ファイルシステムツリーの chroot で OpenSCAP ツールを実行します。OpenSCAP ツールは、選択したプロファイルの標準評価を実行し、修復をイメージに適用します。これにより、稼働中のシステムで修復を実行する場合と比較すると、より完全にハードニングされたイメージをビルドできます。

8.2. OpenSCAP のインストール

SCAP ツールにアクセスできるように OpenSCAP ツールをインストールします。これは、システムの標準セキュリティーチェックリストの作成に役立ちます。

手順

  1. システムに OpenSCAP をインストールします。

    # *yum install openscap-scanner*
  2. scap-security-guide パッケージをインストールします。

    # *yum install scap-security-guide*

    インストールが完了したら、oscap コマンドラインツールを使い始めることができます。SCAP コンテンツは、/usr/share/xml/scap/ssg/content/ ディレクトリーにインストールされます。

8.3. OpenSCAP ブループリントのカスタマイズ

ブループリントカスタマイズの OpenSCAP サポートにより、ブループリントを作成し、それらを使用して独自のハードニング済みイメージをビルドできます。ハードニング済みイメージを作成するには、マウントポイントをカスタマイズし、選択したセキュリティープロファイルに従ってファイルシステムレイアウトを設定します。OpenSCAP プロファイルを選択すると、OpenSCAP ブループリントのカスタマイズにより、選択したプロファイルを使用したイメージのビルド中に修復をトリガーするようにイメージが設定されます。イメージのビルド中に、OpenSCAP は初回起動修復を適用します。

イメージブループリントで OpenSCAP ブループリントのカスタマイズを使用するには、次の情報を提供する必要があります。

  • datastream 修復手順へのデータストリームパス。データストリームパスは、/usr/share/xml/scap/ssg/content/ ディレクトリーにあります。
  • 必要なセキュリティープロファイルの profile_idprofile_id フィールドの値は、長い形式と短い形式の両方を受け入れます。たとえば、cisxccdf_org.ssgproject.content_profile_cis を受け入れることができます。詳細については、RHEL 8 でサポートされている SCAP Security Guide のプロファイル を参照してください。

    以下は、OpenSCAP のカスタマイズ例を使用したブループリントです。

    [customizations]
    datastream = "/usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml"
    profile_id = "xccdf_org.ssgproject.content_profile_cis"

    最も一般的な SCAP ファイルタイプは、SCAP ソースデータストリームです。scap-security-guide パッケージからの SCAP ソースデータストリームの詳細を表示するには、次のコマンドを入力します。

    $ oscap info /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml

oscap ツールはイメージツリーで実行され、任意のパスにマウントされているファイルシステムのオフラインスキャンを実行します。Docker 以外の形式のコンテナーなど、oscap-docker または oscap-vm でサポートされていないカスタムオブジェクトのスキャンに使用できます。oscap-chroot は、oscap ツールの使用方法とオプションを模倣しています。

RHEL イメージビルダーは、ブループリントのカスタマイズに基づいて、osbuild ステージに必要な設定を生成します。さらに、RHEL Image Builder は 2 つのパッケージをイメージに追加します。

  • openscap-scanner - OpenSCAP ツール。
  • scap-security-guide - 修復手順を含むパッケージ。

    注記

    このパッケージはデフォルトでイメージにインストールされるため、修復ステージではデータストリームに scap-security-guide パッケージを使用します。別のデータストリームを使用する場合は、必要なパッケージをブループリントに追加し、oscap 設定でデータストリームへのパスを指定します。

8.4. RHEL Image Builder を使用したハードニング済みイメージの作成

OpenSCAP と RHEL Image Builder の統合により、仮想マシンでデプロイ可能なハードニング済みイメージを作成できます。

前提条件

  • root ユーザーまたは welder グループのメンバーであるユーザーとしてログインしている。

手順

  1. 次の内容で、TOML 形式のブループリントを作成します。

    name = "blueprint_name"
    description = "blueprint_description"
    version = "0.0.1"
    modules = []
    groups = []
    distro = ""
    
    [customizations]
    [[customizations.user]]
    name = "scap-security-guide"
    description = "Admin account"
    password = secure_password_hash
    key = ssh-key
    home = "/home/scap-security-guide"
    group = ["wheel"]
    
    [[customizations.filesystem]]
    mountpoint = "/tmp"
    size = "20 GiB"
    
    [customizations.openscap]
    datastream = "/usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml "
    profile_id = "cis"
  2. OpenSCAP イメージのビルドを開始します。

    # composer-cli compose start blueprint_name qcow2

    blueprint_name はブループリント名です。

    イメージビルドの準備ができたら、デプロイメントでハードニング済みイメージを使用できます。仮想マシンの作成 を参照してください。

検証

ハードニング済みイメージを仮想マシンにデプロイした後、設定コンプライアンスのスキャンを実行して、イメージが選択したセキュリティープロファイルに適合していることを確認できます。

重要

設定コンプライアンススキャンを実行しても、システムが準拠しているとは限りません。詳細については、設定コンプライアンススキャン を参照してください。

  1. SSH を使用してイメージに接続します。
  2. oscap スキャナーを実行します。

    # scap-workbench
  3. SCAP ワークベンチで、以下を実行します。

    1. スキャンするシステムのバージョンを選択します。コンテンツの読み込みを クリックします。
    2. スキャンするプロファイルを選択し、スキャン をクリックします。OpenSCAP は、システムのすべての要件をチェックします。
    3. Scan をクリックして、選択したプロファイルでシステムをスキャンします。
    4. スキャンが完了したら、レポートを表示 をクリックします。

第9章 RHEL Image Builder を使用した KVM ゲストイメージの準備とデプロイ

RHEL Image Builder を使用して、カーネルベースの仮想マシン (KVM) をベースとしたハイパーバイザーにデプロイできる、専用の .qcow2 を作成します。

カスタマイズされた KVM ゲストイメージの作成には、以下の手順が含まれます。

  1. .qcow2 イメージのブループリントの作成
  2. RHEL Image Builder を使用した .qcow2 イメージの作成
  3. KVM ゲストイメージからの仮想マシンの作成

9.1. RHEL Image Builder を使用したカスタマイズされた KVM ゲストイメージの作成

RHEL Image Builder を使用して、カスタマイズした .qcow2 KVM ゲストイメージを作成できます。以下では GUI での手順を示していますが、CLI を使用することもできます。

前提条件

  • システムにアクセスするには、root または weldr グループに属している必要があります。
  • cockpit-composer パッケージがインストールされている。
  • RHEL システムで、Web コンソールの RHEL Image Builder ダッシュボードを開いている。
  • ブループリントを作成している。Web コンソールインターフェイスでのブループリントの作成 を参照してください。

手順

  1. 作成したブループリント名をクリックします。
  2. Images タブを選択します。
  3. Create Image をクリックして、カスタマイズしたイメージを作成します。Create Image ウィンドウが開きます。
  4. Type ドロップダウンメニューリストから、QEMU Image (.qcow2) を選択します。
  5. インスタンス化するときのイメージのサイズを設定し、Create をクリックします。
  6. ウィンドウの右上にある小さなポップアップに、イメージの作成がキューに追加されたことが表示されます。イメージ作成プロセスが完了すると、Image build complete のステータスが表示されます。

検証

  • パンくずリストのアイコンをクリックして、Download オプションを選択します。RHEL Image Builder は、KVM ゲストイメージ .qcow2 ファイルをデフォルトのダウンロード場所にダウンロードします。

9.2. KVM ゲストイメージからの仮想マシンの作成

RHEL Image Builder を使用すると、.qcow2 イメージをビルドし、KVM ゲストイメージを使用して仮想マシンを作成できます。RHEL Image Builder を使用して作成した KVM ゲストイメージでは、cloud-init がすでにインストールされ、有効になっています。

前提条件

  • RHEL Image Builder を使用して .qcow2 イメージを作成している。Web コンソールインターフェイスでのブループリントの作成 を参照してください。
  • システムに qemu-kvm パッケージがインストールされています。/dev/kvm デバイスがシステムで使用可能かどうか、および仮想化機能が BIOS で有効になっているかどうかを確認できる。
  • システムに libvirt および virt-install パッケージがインストールされている。
  • xorriso パッケージによって提供される genisoimage ユーティリティーがシステムにインストールされている。

手順

  1. RHEL Image Builder を使用して作成した .qcow2 イメージを /var/lib/libvirt/images/ ディレクトリーに移動します。
  2. ディレクトリー (cloudinitiso など) を作成し、新規に作成したそのディレクトリーに移動します。

    $ mkdir cloudinitiso
    $ cd cloudinitiso
  3. meta-data という名前のファイルを作成します。このファイルに以下の情報を追加します。

    instance-id: citest
    local-hostname: vmname
  4. user-data という名前のファイルを作成します。以下の情報をファイルに追加します。

    #cloud-config
    user: admin
    password: password
    chpasswd: {expire: False}
    ssh_pwauth: True
    ssh_authorized_keys:
      - ssh-rsa AAA...fhHQ== your.email@example.com

    ssh_authorized_keys は、SSH 公開鍵になります。~/.ssh/<id_rsa.pub>\ で SSH 公開鍵を確認できます。

  5. genisoimage ユーティリティーを使用して、user-data ファイルおよび meta-data ファイルを含む ISO イメージを作成します。

    # genisoimage -output cloud-init.iso -volid cidata -joliet -rock user-data meta-data
    
    I: -input-charset not specified, using utf-8 (detected in locale settings)
    Total translation table size: 0
    Total rockridge attributes bytes: 331
    Total directory bytes: 0
    Path table size(bytes): 10
    Max brk space used 0
    183 extents written (0 MB)
  6. virt-install コマンドを使用して、KVM ゲストイメージから新しい仮想マシンを作成します。仮想マシンイメージへのアタッチメントとして、手順 4 で作成した ISO イメージを含めます。

    # virt-install \
        --memory 4096 \
        --vcpus 4 \
        --name myvm \
        --disk rhel-8-x86_64-kvm.qcow2,device=disk,bus=virtio,format=qcow2 \
        --disk cloud-init.iso,device=cdrom \
        --os-variant rhel 8 \
        --virt-type kvm \
        --graphics none \
        --import
    • --graphics none - ヘッドレス RHEL 8 仮想マシンであることを意味します。
    • --vcpus 4 - 4 つの仮想 CPU を使用することを意味します。
    • --memory 4096 - 4096 MB のメモリーを使用することを意味します。
  7. 仮想マシンのインストールが起動します。

    Starting install...
    Connected to domain mytestcivm
    ...
    [  OK  ] Started Execute cloud user/final scripts.
    [  OK  ] Reached target Cloud-init target.
    
    Red Hat Enterprise Linux 8 (Ootpa)
    Kernel 4.18.0-221.el8.x86_64 on an x86_64

検証

起動が完了すると、仮想マシンにテキストログインインターフェイスが表示されます。VM のローカルコンソールにログインするには、ユーザーデータ ファイルの詳細を使用します。

  1. ユーザー名として admin と入力し、Enter を押します。
  2. password としてパスワードを入力し、Enter を押します。

    ログイン認証が完了すると、CLI を使用して仮想マシンにアクセスできます。

第10章 コンテナーをレジストリーにプッシュしてイメージに埋め込む

RHEL Image Builder を使用すると、OpenSCAP ツールを使用してセキュリティーが強化されたイメージをビルドできます。ブループリントでコンテナーのカスタマイズがサポートされていることを利用して、コンテナーを作成し、作成したイメージに直接埋め込むことができます。

10.1. コンテナーをイメージに埋め込むブループリントのカスタマイズ

registry.access.redhat.com レジストリーからコンテナーを埋め込むには、ブループリントにコンテナーのカスタマイズを追加する必要があります。以下に例を示します。

[[containers]]
source = "registry.access.redhat.com/ubi9/ubi:latest"
name =  "local-name"
tls-verify = true
  • source - 必須フィールド。これは、レジストリーにあるコンテナーイメージへの参照です。この例では、registry.access.redhat.com レジストリーを使用します。タグのバージョンを指定できます。デフォルトのタグバージョンは latest です。
  • name - ローカルレジストリー内のコンテナーの名前。
  • tls-verify - ブールフィールド。tls-verify ブールフィールドは、トランスポート層のセキュリティーを制御します。デフォルト値は true です。

    RHEL Image Builder は、イメージのビルド中にコンテナーをプルし、コンテナーをイメージに格納します。デフォルトのローカルコンテナーストレージの場所は、イメージの種類によって異なります。そのため、Podman などのすべてのサポート container-tools がそれを使用できます。組み込みコンテナーは開始されません。保護されたコンテナーリソースにアクセスするには、containers-auth.json ファイルを使用できます。

10.2. コンテナーレジストリーの認証情報

osbuild-worker サービスは、コンテナーレジストリーとの通信を担当します。これを有効にするには、/etc/osbuild-worker/osbuild-worker.toml 設定ファイルをセットアップします。

注記

/etc/osbuild-worker/osbuild-worker.toml 設定ファイルを設定したら、osbuild-worker サービスを再起動する必要があります。これは、osbuild-worker サービス開始の際に、/etc/osbuild-worker/osbuild-worker.toml 設定ファイルを 1 度のみ読み込むためです。

/etc/osbuild-worker/osbuild-worker.toml 設定ファイルには、保護されたリソースへのアクセスに使用される、containers-auth.json ファイルのパスを参照する文字列である auth_field_path エントリーを含む container セクションがあります。コンテナーレジストリーの認証情報は、コンテナーをイメージに埋め込むときに、コンテナーイメージをレジストリーからプルするためにのみ使用されます。

以下に例を示します。

[containers]
auth_file_path = "/etc/osbuild-worker/containers-auth.json"

関連情報

  • containers-auth.json の man ページ

10.3. コンテナーアーティファクトをコンテナーレジストリーに直接プッシュする

RHEL for Edge Container イメージなどのコンテナーアーティファクトは、RHEL Image Builder CLI を使用して、ビルド後にコンテナーレジストリーに直接プッシュできます。

前提条件

  • quay.io レジストリー へのアクセス。この例では、ターゲットレジストリーとして quay.io コンテナーレジストリーを使用していますが、任意のコンテナーレジストリーを使用できます。

手順

  1. コンテナープロバイダーを選択するために、registry-config.toml ファイルをセットアップします。認証情報はオプションです。

    provider = "container_provider"
    
    [settings]
    tls_verify = false
    username = "admin"
    password = "your_password"
  2. ブループリントを .toml 形式で作成します。これは、ブループリントに nginx パッケージをインストールするコンテナーのブループリントです。

    name = "simple-container"
    description = "Simple RHEL container"
    version = "0.0.1"
    
    [[packages]]
    name = "nginx"
    version = "*"
  3. ブループリントをプッシュします。

    # composer-cli blueprints push blueprint.toml
  4. レジストリーとリポジトリーを composer-cli ツールに引数として渡し、コンテナーイメージをビルドします。

    # composer-cli compose start simple-container container "quay.io:8080/osbuild/repository" registry-config.toml
    • simple-container - ブループリント名です。
    • コンテナー - イメージの種類です。
    • "quay.io:8080/osbuild/repository" - quay.io はターゲットレジストリー、osbuild は組織、repository はビルドが完了したときにコンテナーをプッシュする場所です。オプションで、tag を設定できます。:tag の値を設定しない場合、デフォルトで :latest タグが使用されます。

      注記

      コンテナーイメージのビルドには、カスタマイズされたパッケージの依存関係を解決するため時間がかかります。

  5. イメージのビルドが完了すると、作成したコンテナーが quay.io で使用できるようになります。

検証

  1. quay.io を開き、Repository Tags をクリックします。

     You can see details about the container you created, such as:
    - last modified
    - image size
    - the `manifest ID`, that you can copy to the clipboard.
  2. manifest ID の値をコピーして、コンテナーを埋め込むイメージをビルドします。

関連情報

10.4. イメージのビルドとコンテナーのイメージへのプル

コンテナーイメージを作成したら、カスタマイズしたイメージをビルドし、コンテナーイメージをそこにプルできます。そのためには、ブループリントで コンテナーのカスタマイズ を指定し、最終的なイメージの コンテナー名 を指定する必要があります。ビルドプロセス中に、コンテナーイメージが取得され、ローカルの Podman コンテナーストレージに配置されます。

前提条件

手順

  1. qcow2 イメージをビルドするためのブループリントを作成します。ブループリントには、 カスタマイズ。

    name = "image"
    description = "A qcow2 image with a container"
    version = "0.0.1"
    distro = "rhel-90"
    
    [[packages]]
    name = "podman"
    version = "*"
    
    [[containers]]
    source = "registry.access.redhat.com/ubi9:8080/osbuild/container/container-image@sha256:manifest-ID-from-Repository-tag: tag-version"
    name =  "source-name"
    tls-verify = true
  2. ブループリントをプッシュします。

    # composer-cli blueprints push blueprint-image.toml
  3. コンテナーイメージをビルドします。

    # composer-cli start compose image qcow2
    • image はブループリントの名前です。
    • qcow2 はイメージタイプです。

      注記

      quay.io レジストリーでコンテナーをチェックするため、イメージのビルドに時間がかかります。

  4. Compose のステータスを確認するには、以下のコマンドを実行します。

    # composer-cli compose status

    Compose が完了すると、ステータスが FINISHED になります。リスト内の Compose を識別するには、その UUID を使用します。

  5. Compose プロセスが完了したら、作成したイメージファイルをデフォルトのダウンロード先にダウンロードします。

    # composer-cli compose image UUID

    UUID は、前の手順で示した UUID 値に置き換えます。

    作成してダウンロードした qcow2 イメージを使用して、仮想マシンを作成できます。

検証

ダウンロードした qcow2 イメージで、次の手順を実行します。

  1. 仮想マシンで qcow2 イメージを起動します。KVM ゲストイメージからの仮想マシンの作成 を参照してください。
  2. qemu ウィザードが開きます。qcow2 イメージにログインします。

    1. ユーザー名とパスワードを入力します。これらは、customizations.user セクションの .qcow2 ブループリントで設定するか、起動時に cloud-init で作成したユーザー名とパスワードにすることができます。
  3. コンテナーイメージを実行し、コンテナー内でシェルプロンプトを開きます。

    # podman run -it registry.access.redhat.com/ubi9:8080/osbuild/repository /bin/bash/

    registry.access.redhat.com はターゲットレジストリー、osbuild は組織、repository はビルドの完了時にコンテナーをプッシュする場所です。

  4. ブループリントに追加したパッケージが利用可能であることを確認します。

    # type -a nginx

    出力には、nginx パッケージのパスが表示されます。

第11章 RHEL Image Builder を使用したクラウドイメージの準備とアップロード

RHEL Image Builder は、さまざまなクラウドプラットフォームですぐに使用できるカスタムシステムイメージを作成できます。カスタマイズした RHEL システムイメージをクラウドで使用するには、指定の出力タイプを使用して RHEL Image Builder でシステムイメージを作成し、イメージをアップロードするようにシステムを設定し、クラウドアカウントへイメージをアップロードします。RHEL Web コンソールの Image Builder アプリケーションを介して、カスタマイズされたイメージクラウドをプッシュできます。これは、AWSMicrosoft Azure クラウドなど、Red Hat サポート対象のサービスプロバイダーの一部で利用できます。イメージを AWS クラウド AMI にプッシュする および VHD イメージを Microsoft Azure クラウドにプッシュするを 参照してください。

11.1. AWS AMI イメージのアップロードの準備

AWS AMI イメージをアップロードする前に、イメージをアップロードするためのシステムを設定する必要があります。

前提条件

手順

  1. Python 3 および pip ツールをインストールします。

    # yum install python3 python3-pip
  2. pipAWS コマンドラインツール をインストールします。

    # pip3 install awscli
  3. 以下のコマンドを実行してプロファイルを設定します。ターミナルで、認証情報、リージョン、および出力形式を指定するように求められます。

    $ aws configure
    AWS Access Key ID [None]:
    AWS Secret Access Key [None]:
    Default region name [None]:
    Default output format [None]:
  4. バケット名を定義し、以下のコマンドを使用してバケットを作成します。

    $ BUCKET=bucketname
    $ aws s3 mb s3://$BUCKET

    bucketname は、バケット名に置き換えます。この名前は、グローバルで一意となるように指定する必要があります。上記で、バケットが作成されます。

  5. S3 バケットへのアクセス許可を付与するには、AWS Identity and Access Management (IAM) で vmimport S3 ロールを作成します (まだ作成していない場合)。

    1. 信頼ポリシーの設定で、JSON 形式で trust-policy.json ファイルを作成します。以下に例を示します。

      {
          "Version": "2022-10-17",
          "Statement": [{
              "Effect": "Allow",
              "Principal": {
                  "Service": "vmie.amazonaws.com"
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                      "sts:Externalid": "vmimport"
                  }
              }
          }]
      }
    2. ロールポリシーの設定を含む role-policy.json ファイルを JSON 形式で作成します。以下に例を示します。

      {
          "Version": "2012-10-17",
          "Statement": [{
              "Effect": "Allow",
              "Action": ["s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket"],
              "Resource": ["arn:aws:s3:::%s", "arn:aws:s3:::%s/"] }, { "Effect": "Allow", "Action": ["ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe"],
              "Resource": "*"
          }]
      }
      $BUCKET $BUCKET
    3. trust-policy.json ファイルを使用して、Amazon Web Services アカウントのロールを作成します。

      $ aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
    4. role-policy.json ファイルを使用して、インラインポリシードキュメントを埋め込みます。

      $ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json

11.2. CLI の使用による AMI イメージの AWS へのアップロード

RHEL Image Builder を使用して ami イメージをビルドし、CLI を使用してそれらを Amazon AWS Cloud サービスプロバイダーに直接プッシュできます。

前提条件

  • AWS IAM アカウントマネージャーに Access Key ID を設定している。
  • 書き込み可能な S3 バケット を準備している。
  • 定義済みの青写真がある。

手順

  1. テキストエディターを使用して、次の内容の設定ファイルを作成します。

    provider = "aws"
    
    [settings]
    accessKeyID = "AWS_ACCESS_KEY_ID"
    secretAccessKey = "AWS_SECRET_ACCESS_KEY"
    bucket = "AWS_BUCKET"
    region = "AWS_REGION"
    key = "IMAGE_KEY"

    フィールドの値を accessKeyIDsecretAccessKeybucket、および region の認証情報に置き換えます。IMAGE_KEY 値は、EC2 にアップロードする仮想マシンイメージの名前です。

  2. ファイルを CONFIGURATION-FILE.toml として保存し、テキストエディターを閉じます。
  3. Compose を開始して AWS にアップロードします。

    # composer-cli compose start blueprint-name image-type image-key configuration-file.toml

    以下を置き換えます。

    • blueprint-name は、作成したブループリントの名前に置き換えます。
    • blueprint-name は、ami イメージタイプに置き換えます。
    • image-key は、EC2 にアップロードする仮想マシンイメージの名前に置き換えます。
    • configuration-file.toml は、クラウドプロバイダーの設定ファイルの名前に置き換えます。

      注記

      カスタマイズしたイメージの送信先となるバケットの正しい AWS Identity and Access Management (IAM) 設定が必要です。イメージをアップロードする前にバケットにポリシーを設定しておく必要があります。

  4. イメージビルドのステータスを確認します。

    # composer-cli compose status

    イメージのアップロードプロセスが完了すると、FINISHED ステータスが表示されます。

検証

イメージのアップロードが成功したことを確認するには、以下を行います。

  1. メニューで EC2 にアクセスし、AWS コンソールで正しいリージョンを選択します。イメージが正常にアップロードされたことを示すには、イメージが available ステータスになっている必要があります。
  2. ダッシュボードでイメージを選択し、Launch をクリックします。

11.3. イメージの AWS Cloud AMI へのプッシュ

RHEL Image Builder を使用して (.raw) イメージを作成し、Upload to AWS チェックボックスをオンにして、作成した出力イメージを Amazon AWS Cloud AMI サービスプロバイダーに直接プッシュすることができます。

前提条件

手順

  1. RHEL Image Builder のダッシュボードで、以前に作成した ブループリント名 をクリックします。
  2. Images タブを選択します。
  3. Create Image をクリックして、カスタマイズしたイメージを作成します。

    Create Image ウィンドウが開きます。

    1. Type ドロップダウンメニューから、Amazon Machine Image Disk (.raw) を選択します。
    2. イメージを AWS Cloud にアップロードするには、Upload to AWS チェックボックスをオンして、Next をクリックします。
    3. AWS へのアクセスを認証するには、対応するフィールドに AWS access key ID および AWS secret access key を入力します。Next をクリックします。

      注記

      新規アクセスキー ID を作成する場合にのみ、AWS シークレットアクセスキーを表示できます。秘密鍵が分からない場合は、新しいアクセスキー ID を生成します。

    4. Image name フィールドにイメージ名を、Amazon S3 bucket name フィールドに Amazon バケット名を入力して、カスタマイズイメージを追加するバケットの AWS region フィールドを入力します。Next をクリックします。
    5. 情報を確認し、Finish をクリックします。

      必要に応じて、Back をクリックして誤った情報を変更します。

      注記

      カスタマイズイメージを送信するバケットの正しい IAM 設定が必要です。この手順では IAM のインポートとエクスポートを使用するため、バケットにイメージをアップロードする前にバケットに ポリシー を設定する必要があります。詳細は、IAM ユーザーの必要なパーミッション を参照してください。

  4. 右上のポップアップで、保存の進行状況が通知されます。イメージ作成の開始、イメージ作成の進捗、およびその後の AWS Cloud にアップロードに関する情報も通知されます。

    プロセスが完了すると、Image build complete のステータスが表示されます。

  5. ブラウザーで、Service→EC2 にアクセスします。

    1. AWS コンソールのダッシュボードメニューで、正しいリージョン を選択します。イメージのステータスは、アップロードされていることを示す Available でなければなりません。
    2. AWS ダッシュボードでイメージを選択し、Launch をクリックします。
  6. 新しいウィンドウが開きます。イメージを開始するために必要なリソースに応じて、インスタンスタイプを選択します。Review and Launch をクリックします。
  7. インスタンスの開始の詳細を確認します。変更が必要な場合は、各セクションを編集できます。Launch をクリックします。
  8. インスタンスを起動する前に、インスタンスにアクセスするための公開鍵を選択します。

    既存のキーペアを使用するか、キーペアーを新規作成します。

    次の手順に従って、EC2 で新規キーペアを作成し、新規インスタンスにアタッチします。

    1. ドロップダウンメニューリストから、Create a new key pair を選択します。
    2. 新しいキーペアに名前を入力します。新しいキーペアが生成されます。
    3. Download Key Pair をクリックして、新しいキーペアをローカルシステムに保存します。
  9. 次に、Launch Instance をクリックしてインスタンスを起動できます。

    Initializing と表示されるインスタンスのステータスを確認できます。

  10. インスタンスのステータスが running になると、Connect ボタンが有効になります。
  11. Connect をクリックします。SSH を使用して接続する方法を示すウィンドウが表示されます。

    1. 優先する接続方法として スタンドアロン SSH クライアント を選択し、ターミナルを開きます。
    2. 秘密鍵を保存する場所で、SSH が機能するために鍵が公開されていることを確認してください。これには、以下のコマンドを実行します。

      $ chmod 400 _your-instance-name.pem_&gt;
    3. パブリック DNS を使用してインスタンスに接続します。

      $ ssh -i &lt;_your-instance-name.pem_&gt; ec2-user@&lt;_your-instance-IP-address_&gt;
    4. yes と入力して、接続の続行を確定します。

      その結果、SSH 経由でインスタンスに接続されます。

検証

  • SSH を使用してインスタンスに接続しているときにアクションを実行できるかどうかを確認します。

11.4. Microsoft Azure VHD イメージのアップロードの準備

RHEL Image Builder を使用して、Microsoft Azure クラウドにアップロードできる VHD イメージを作成できます。

前提条件

  • Microsoft Azure リソースグループとストレージアカウントがある。
  • Python がインストールされている。AZ CLI ツールは Python に依存しています。

手順

  1. Microsoft リポジトリーキーをインポートします。

    # rpm --import https://packages.microsoft.com/keys/microsoft.asc
  2. 次の情報を使用して、ローカルの azure-cli.repo リポジトリーを作成します。azure-cli.repo リポジトリーを /etc/yum.repos.d/ に保存します。

    [azure-cli]
    name=Azure CLI
    baseurl=https://packages.microsoft.com/yumrepos/vscode
    enabled=1
    gpgcheck=1
    gpgkey=https://packages.microsoft.com/keys/microsoft.asc
  3. Microsoft Azure CLI をインストールします。

    # yumdownloader azure-cli
    # rpm -ivh --nodeps azure-cli-2.0.64-1.el7.x86_64.rpm
    注記

    Microsoft Azure CLI パッケージのダウンロードバージョンは、現在利用可能なバージョンによって異なる場合があります。

  4. Microsoft Azure CLI を実行します。

    $ az login

    ターミナルに次のメッセージが表示されます。Note, we have launched a browser for you to login.For old experience with device code, use "az login --use-device-code次に、ターミナルは、ログインできる場所から https://microsoft.com/devicelogin へのリンクのあるブラウザーを開きます。

    注記

    リモート (SSH) セッションを実行している場合、ログインページのリンクはブラウザーで開きません。この場合、リンクをブラウザーにコピーしてログインし、リモートセッションを認証できます。サインインするには、Web ブラウザーを使用してページ https://microsoft.com/devicelogin を開き、デバイスコードを入力して認証します。

  5. Microsoft Azure のストレージアカウントのキーをリスト表示します。

    $ az storage account keys list --resource-group <resource_group_name> --account-name <storage_account_name>

    resource-group-name を Microsoft Azure リソースグループの名前に置き換え、storage-account-name を Microsoft Azure ストレージアカウントの名前に置き換えます。

    注記

    次のコマンドを使用して、使用可能なリソースを一覧表示できます。

    $ az resource list

上記のコマンドの出力にある値 key1 をメモします。

  1. ストレージコンテナーを作成します。

    $ az storage container create --account-name <storage_account_name>\
    --account-key <key1_value> --name <storage_account_name>

    storage-account-name は、ストレージアカウント名に置き換えます。

関連情報

11.5. Microsoft Azure クラウドへの VHD イメージのアップロード

カスタマイズした VHD イメージを作成したら、それを Microsoft Azure クラウドにアップロードできます。

前提条件

  • Microsoft Azure VHD イメージをアップロードするようにシステムを設定している。Microsoft Azure VHD イメージのアップロードの準備 を参照してください。
  • RHEL Image Builder で Microsoft Azure VHD イメージを作成している。

    • CLI で、vhd 出力タイプを使用します。
    • GUI で、Azure Disk Image (.vhd) イメージタイプを使用します。

手順

  1. イメージを Microsoft Azure にプッシュし、そこからインスタンスを作成します。

    $ az storage blob upload --account-name <account_name> --container-name <container_name> --file <_image_-disk.vhd> --name <_image_-disk.vhd> --type page
    ...
  2. Microsoft Azure Blob ストレージへのアップロードが完了したら、そこから Microsoft Azure イメージを作成します。

    $ az image create --resource-group &lt; _resource_group_name_&gt; --name &lt;_image_-disk.vhd&gt;  --os-type linux --location eastus --source https://$ACCOUNT.blob.core.windows.net/&lt;_container_name_&gt; &lt;_image_-disk.vhd&gt;
     - Running ...

検証

  1. Microsoft Azure ポータル、または以下のようなコマンドを使用して、インスタンスを作成します。

    $ az vm create --resource-group &lt;_resource_group_name_&gt; --location eastus --name &lt;_image_-disk.vhd&gt; --image &lt;_image_-disk.vhd&gt; --admin-username azure-user --generate-ssh-keys
     - Running ...
  2. 秘密鍵を使用して、SSH 経由で、作成されたインスタンスにアクセスします。azure-user としてログインします。このユーザー名は前の手順で設定したものです。

11.6. VHD イメージを Microsoft Azure クラウドにプッシュする

RHEL Image Builder を使用して .vhd イメージを作成できます。作成したら、出力された .vhd イメージを、Microsoft Azure クラウドサービスプロバイダーの Blob Storage にプッシュできます。

前提条件

手順

  1. RHEL Image Builder ダッシュボードで、使用するブループリントを選択します。
  2. Images タブをクリックします。
  3. Create Image をクリックして、カスタマイズした .vhd イメージを作成します。

    Create image ウィザードが開きます。

    1. Type ドロップダウンメニューリストから Microsoft Azure (.vhd) を選択します。
    2. イメージを Microsoft Azure クラウドにアップロードするには、Upload to Azure チェックボックスをオンします。
    3. Image Size を入力し、Next をクリックします。
  4. Upload to Azure ページで、次の情報を入力します。

    1. 認証ページで、次のように入力します。

      1. Storage account の名前。これは、Microsoft Azure portalStorage account ページにあります。
      2. Storage access key: これは、Access Key ストレージページにあります。
      3. Next をクリックします。
    2. Authentication ページで、次のように入力します。

      1. イメージ名
      2. Storage container。これは、イメージのアップロード先の BLOB コンテナーです。Microsoft Azure portalBlob service セクションにあります。
      3. Next をクリックします。
  5. Review ページで Create をクリックします。RHEL Image Builder が起動し、アップロードプロセスが開始します。

    Microsoft Azure Cloud にプッシュしたイメージにアクセスします。

  6. Microsoft Azure ポータル にアクセスします。
  7. 検索バーに "storage account" と入力し、リストから Storage accounts をクリックします。
  8. 検索バーに "Images" と入力し、Services の下にある最初のエントリーを選択します。Image Dashboard にリダイレクトされます。
  9. ナビゲーションパネルで、Containers をクリックします。
  10. 作成したコンテナーを見つけます。コンテナー内には、RHEL Image Builder を使用して作成およびプッシュした .vhd ファイルがあります。

検証

  1. 仮想マシンイメージを作成して起動できることを確認します。

    1. 検索バーに images account と入力し、リストから Images をクリックします。
    2. +Create をクリックします。
    3. ドロップダウンリストから、前に使用したリソースグループを選択します。
    4. イメージの名前を入力します。
    5. OS typeLinux を選択します。
    6. VM generationGen 2 を選択します。
    7. Storage BlobBrowse をクリックし、VHD ファイルに到達するまでストレージアカウントとコンテナーをクリックします。
    8. ページの最後にある Select をクリックします。
    9. Account Type を選択します (例: Standard SSD)
    10. Review + Create をクリックし、Create をクリックします。イメージが作成されるまでしばらく待機します。
  2. 仮想マシンを起動するには、次の手順に従います。

    1. Go to resource をクリックします。
    2. ヘッダーのメニューバーから + Create VM をクリックします。
    3. 仮想マシンの名前を入力します。
    4. Size セクションと Administrator account セクションに入力します。
    5. Review + Create をクリックし、Create をクリックします。デプロイメントの進行状況を確認できます。

      デプロイメントが完了したら、仮想マシン名をクリックしてインスタンスのパブリック IP アドレスを取得し、SSH を使用して接続します。

    6. ターミナルを開いて SSH 接続を作成し、仮想マシンに接続します。

11.7. VMDK イメージのアップロードと vSphere での RHEL 仮想マシンの作成

RHEL Image Builder を使用すると、カスタマイズした VMware vSphere システムイメージを Open virtualization format (.ova) または Virtual disk (.vmdk) 形式で作成できます。これらのイメージを VMware vSphere クライアントにアップロードできます。govc import.vmdk CLI ツールを使用して、.vmdk または .ova イメージを VMware vSphere にアップロードできます。作成した vmdk には、インストール済みの cloud-init パッケージが含まれています。このパッケージを使用して、たとえばユーザーデータを使用してユーザーをプロビジョニングできます。

注記

VMware vSphere GUI を使用した vmdk イメージのアップロードはサポートされていません。

前提条件

  • ユーザー名とパスワードをカスタマイズしたブループリントを作成している。
  • RHEL Image Builder を使用して VMware vSphere イメージを .ova または .vmdk 形式で作成し、ホストシステムにダウンロードしている。
  • govc CLI ツールをインストールして設定し、import.vmdk コマンドが使用可能である。

手順

  1. GOVC 環境変数を使用して、ユーザー環境で次の値を設定します。

    GOVC_URL
    GOVC_DATACENTER
    GOVC_FOLDER
    GOVC_DATASTORE
    GOVC_RESOURCE_POOL
    GOVC_NETWORK
  2. VMware vSphere イメージをダウンロードしたディレクトリーに移動します。
  3. 次の手順に従って、vSphere で VMware vSphere イメージを起動します。

    1. VMware vSphere イメージを vSphere にインポートします。

      $ govc import.vmdk ./composer-api.vmdk foldername

      .ova 形式の場合:

      $ govc import.ova ./composer-api.ova foldername
    2. 電源をオンにせずに vSphere に仮想マシンを作成します。

      govc vm.create \
      -net.adapter=vmxnet3 \
      -m=4096 -c=2 -g=rhel8_64Guest \
      -firmware=efi -disk=”foldername/composer-api.vmdk” \
      -disk.controller=scsi -on=false \
       vmname

      .ova 形式の場合は、行 -firmware=efi -disk=”foldername/composer-api.vmdk” \ を `-firmware=efi -disk=”foldername/composer-api.ova” \ に置き換えます。

    3. 仮想マシンの電源をオンにします。

      govc vm.power -on vmname
    4. 仮想マシンの IP アドレスを取得します。

      govc vm.ip vmname
    5. ブループリントで指定したユーザー名とパスワードで、SSH を使用して、仮想マシンにログインします。

      $ ssh admin@<_ip_address_of_the_vm_>
      注記

      govc datastore.upload コマンドを使用してローカルホストから宛先に .vmdk イメージをコピーしても、コピーして作成したイメージを使用することはできません。vSphere GUI には import.vmdk コマンドを使用するオプションがないため、vSphere GUI は直接アップロードをサポートしません。そのため、.vmdk イメージを vSphere GUI から使用することはできません。

11.8. RHEL Image Builder を使用した GCP へのイメージのアップロード

RHEL Image Builderを使用すると、gce イメージをビルドし、ユーザーまたは GCP サービスアカウントの認証情報を指定して、gce イメージを GCP 環境に直接アップロードできます。

11.8.1. CLI を使用した gce イメージの GCP へのアップロード

gce イメージを GCP にアップロードするための認証情報を含む設定ファイルをセットアップする手順に従います。

警告

イメージが起動しなくなるため、gce イメージを GCP に手動でインポートすることはできません。アップロードするには、gcloud または RHEL Image Builder を使用する必要があります。

前提条件

  • イメージを GCP にアップロードするための有効な Google アカウントと認証情報がある。認証情報は、ユーザーアカウントまたはサービスアカウントから取得できます。認証情報に関連付けられたアカウントには、少なくとも次の IAM ロールが割り当てられている必要があります。

    • roles/storage.admin - ストレージオブジェクトの作成と削除
    • roles/compute.storageAdmin - 仮想マシンイメージの Compute Engine へのインポート
  • 既存の GCP バケットがあります。

手順

  1. テキストエディターを使用して、次の内容を含む gcp-config.toml 設定ファイルを作成します。

    provider = "gcp"
    
    [settings]
    bucket = "GCP_BUCKET"
    region = "GCP_STORAGE_REGION"
    object = "OBJECT_KEY"
    credentials = "GCP_CREDENTIALS"
    • GCP_BUCKET は既存のバケットを指します。アップロード中のイメージの中間ストレージオブジェクトを格納するために使用されます。
    • GCP_STORAGE_REGION は、通常の Google ストレージリージョンであると同時に、デュアルリージョンまたはマルチリージョンでもあります。
    • OBJECT_KEY は、中間ストレージオブジェクトの名前です。アップロード前に存在してはならず、アップロードプロセスが完了すると削除されます。オブジェクト名が .tar.gz で終わらない場合、拡張子がオブジェクト名に自動的に追加されます。
    • GCP_CREDENTIALS は、GCP からダウンロードされた認証情報 JSON ファイルの Base64 エンコードスキームです。認証情報によって、GCP がイメージをアップロードするプロジェクトが決まります。

      注記

      GCP での認証に別のメカニズムを使用する場合、gcp-config.toml ファイルでの GCP_CREDENTIALS の指定は任意です。他の認証方法については、Authenticating with GCP を参照してください。

  2. GCP からダウンロードした JSON ファイルから GCP_CREDENTIALS を取得します。

    $ sudo base64 -w 0 cee-gcp-nasa-476a1fa485b7.json
  3. 追加のイメージ名とクラウドプロバイダープロファイルを使用して Compose を作成します。

    $ sudo composer-cli compose start BLUEPRINT-NAME gce IMAGE_KEY gcp-config.toml

    イメージビルド、アップロード、およびクラウド登録プロセスは、完了に最大 10 分かかる場合があります。

検証

  • イメージのステータスが FINISHED であることを確認します。

    $ sudo composer-cli compose status

11.8.2. RHEL Image Builder によるさまざまな GCP 認証情報の認証順序の並べ替え

RHEL Image Builder でいくつかの異なる種類の認証情報を使用して、GCP で認証できます。複数の認証情報セットを使用して GCP で認証するように RHEL Image Builder が設定されている場合、次の優先順位で認証情報が使用されます。

  1. 設定ファイルで composer-cli コマンドで指定された認証情報。
  2. osbuild-composer ワーカー設定で設定された認証情報。
  3. Google GCP SDK ライブラリーからの アプリケーションのデフォルト認証情報。次のオプションを使用して認証方法を自動的に見つけようとします。

    1. GOOGLE_APPLICATION_CREDENTIALS 環境変数が設定されている場合、Application Default Credentials は、変数が指すファイルから認証情報を読み込んで使用しようとします。
    2. アプリケーションのデフォルト認証情報は、コードを実行しているリソースにアタッチされているサービスアカウントを使用して認証を試みます。たとえば、Google Compute Engine 仮想マシンです。

      注記

      イメージをアップロードする GCP プロジェクトを決定するには、GCP 認証情報を使用する必要があります。したがって、すべてのイメージを同じ GCP プロジェクトにアップロードする場合を除き、composer-cli コマンドを使用して gcp-config.toml 設定ファイルに認証情報を指定する必要があります。

11.8.2.1. composer-cli コマンドで GCP 認証情報を指定する

アップロードターゲット設定の gcp-config.toml ファイルで、GCP 認証情報を指定できます。時間を節約するために、Google アカウント認証情報の JSON ファイルの Base64 エンコードスキームを使用します。

手順

  1. GOOGLE_APPLICATION_CREDENTIALS 環境変数に保存されているパスを使用して、Google アカウント認証情報ファイルのエンコードされたコンテンツを取得するには、次のコマンドを実行します。

    $ base64 -w 0 "${GOOGLE_APPLICATION_CREDENTIALS}"
  2. アップロードターゲット設定の gcp-config.toml ファイルで、認証情報を設定します。

    provider = "gcp"
    
    [settings]
    provider = "gcp"
    
    [settings]
    ...
    credentials = "GCP_CREDENTIALS"

11.8.2.2. osbuild-composer ワーカー設定で認証情報を指定する

すべてのイメージビルドでグローバルに GCP に使用される GCP 認証認証情報を設定できます。このようにして、イメージを同じ GCP プロジェクトにインポートする場合、GCP へのすべてのイメージのアップロードに同じ認証情報を使用できます。

手順

  • /etc/osbuild-worker/osbuild-worker.toml ワーカー設定で、次の認証情報の値を設定します。

    [gcp]
    credentials = "PATH_TO_GCP_ACCOUNT_CREDENTIALS"

11.9. RHEL Image Builder GUI ツールを使用した VMDK イメージの vSphere へのプッシュ

RHEL Image Builder GUI ツールを使用して VMware イメージをビルドし、そのイメージを直接 vSphere インスタンスにプッシュすることで、イメージファイルをダウンロードして手動でプッシュする必要がなくなります。作成した vmdk には、インストール済みの cloud-init パッケージが含まれています。このパッケージを使用して、たとえばユーザーデータを使用してユーザーをプロビジョニングできます。RHEL Image Builder を使用して .vmdk イメージをビルドし、vSphere インスタンスサービスプロバイダーに直接プッシュするには、次の手順に従います。

前提条件

手順

  1. 作成したブループリントの Images タブをクリックします。
  2. Create Image をクリックして、カスタマイズしたイメージを作成します。

    イメージタイプウィンドウが開きます。

  3. Image type ウィンドウで、以下を実行します。

    1. ドロップダウンメニューからタイプ (VMware vSphere (.vmdk)) を選択します。
    2. Upload to VMware チェックボックスをチェックして、イメージを vSphere にアップロードします。
    3. 必要に応じて、インスタンス化するイメージのサイズを設定します。最小のデフォルトサイズは 2 GB です。
    4. Next をクリックします。
  4. Upload to VMware ウィンドウの Authentication の下に以下の情報を入力します。

    1. ユーザー名: vSphere アカウントのユーザー名。
    2. パスワード: vSphere アカウントのパスワード。
  5. Upload to VMware ウィンドウの Destination の下に、イメージのアップロード先に関する以下の情報を入力します。

    1. Image name: イメージの名前。
    2. VMware vSphere の URL。
    3. クラスター: クラスターの名前。
    4. データセンター: データセンターの名前。
    5. Data store: データストアの名前。
    6. Next をクリックします。
  6. 確認 ウィンドウで、イメージ作成の詳細を確認し、Finish をクリックします。

    Back をクリックして、誤った情報を変更できます。

    RHEL Image Builder は、RHEL vSphere イメージの Compose をキューに追加し、指定した vSphere インスタンスのクラスターにイメージを作成してアップロードします。

    注記

    イメージビルドおよびアップロードプロセスの完了には数分かかります。

    プロセスが完了すると、Image build complete のステータスが表示されます。

検証

イメージステータスのアップロードが正常に完了したら、アップロードしたイメージから仮想マシン (VM) を作成し、ログインできます。これを行うには、以下を行います。

  1. VMware vSphere クライアントにアクセスします。
  2. 指定した vSphere インスタンスのクラスターでイメージを検索します。
  3. アップロードしたイメージを選択します。
  4. 選択したイメージを右クリックします。
  5. New Virtual Machine をクリックします。

    New Virtual Machine ウィンドウが開きます。

    New Virtual Machine ウィンドウで、以下の詳細を指定します。

    1. New Virtual Machine を選択します。
    2. 仮想マシンの名前とフォルダーを選択します。
    3. コンピューターリソースの選択: この操作の宛先コンピューターリソースを選択します
    4. ストレージの選択: たとえば NFS-Node1 を選択します。
    5. 互換性の選択: イメージは BIOS 専用でなければなりません。
    6. ゲストオペレーティングシステムを選択します。たとえば、Linux および Red Hat Fedora (64-bit) を選択します。
    7. ハードウェアのカスタマイズ: 仮想マシンを作成する場合は、右上の Device Configuration ボタンでデフォルトの New Hard Disk を削除し、ドロップダウンを使用して Existing Hard Disk ディスクイメージを選択します。
    8. 準備完了: 詳細を確認し、Finish をクリックしてイメージを作成します。
  6. VMs タブに移動します。

    1. リストから、作成した仮想マシンを選択します。
    2. パネルから Start ボタンをクリックします。仮想マシンイメージを読み込み中であることを示す新しいウィンドウが表示されます。
    3. ブループリント用に作成した認証情報を使用してログインします。
    4. ブループリントに追加したパッケージがインストールされていることを確認できます。以下に例を示します。

      $ rpm -qa | grep firefox

11.10. OCI へのカスタムイメージのプッシュ

RHEL Image Builder を使用すると、カスタマイズしたイメージを作成して、Oracle Cloud Infrastructure (OCI) インスタンスに直接プッシュできます。その後、OCI ダッシュボードからイメージインスタンスを開始できます。

前提条件

  • システムに対して root または weldr グループのユーザーアクセスがある。
  • Oracle Cloud アカウントを持っている。
  • 管理者によって OCI ポリシー でセキュリティーアクセスが許可されている必要があります。
  • 選択した OCI_REGION に OCI バケットを作成しました。

手順

  1. ブラウザーで Web コンソールの RHEL Image Builder インターフェイスを開きます。
  2. Create blueprint をクリックします。Create blueprint ウィザードが開きます。
  3. Details ページで、ブループリントの名前を入力し、必要に応じて説明を入力します。Next をクリックします。
  4. Packages ページで、イメージに含めるコンポーネントとパッケージを選択します。Next をクリックします。
  5. Customizations ページで、ブループリントに必要なカスタマイズを設定します。Next をクリックします。
  6. Review ページで Create をクリックします。
  7. イメージを作成するには、Create Image をクリックします。Create image ウィザードが開きます。
  8. Image output ページで、次の手順を実行します。

    1. "Select a blueprint" ドロップダウンメニューから、必要なブループリントを選択します。
    2. "Image output type" ドロップダウンメニューから、Oracle Cloud Infrastructure (.qcow2) を選択します。
    3. イメージを OCI にアップロードするには、"Upload OCI" チェックボックスをオンにします。
    4. "image size" を入力します。Next をクリックします。
  9. Upload to OCI - Authentication ページで、次の必須の詳細を入力します。

    1. ユーザー OCID: ユーザーの詳細を表示するページのコンソールで確認できます。
    2. 秘密鍵
  10. Upload to OCI - Destination ページで、次の必須の詳細を入力し、Next をクリックします。

    1. イメージ名: アップロードするイメージの名前。
    2. OCI バケット
    3. バケット namespace
    4. バケットリージョン
    5. バケットコンパートメント
    6. バケットテナンシー
  11. ウィザードの詳細を確認し、Finish をクリックします。

RHEL Image Builder が、RHEL .qcow2 イメージの Compose をキューに追加します。

検証

  1. OCI ダッシュボード → カスタムイメージにアクセスします。
  2. イメージに指定した Compartment を選択し、Import image テーブルでイメージを見つけます。
  3. イメージ名をクリックして、イメージ情報を確認します。

11.11. OpenStack への QCOW2 イメージのアップロード

RHEL Image Builder ツールを使用すると、OpenStack クラウドデプロイメントにアップロードし、そこでインスタンスを起動するのに適した、カスタマイズした .qcow2 イメージを作成できます。RHEL Image Builder は QCOW2 フォーマットでイメージを作成しますが、OpenStack に固有の変更がさらに加えられています。

警告

RHEL Image Builder を OpenStack イメージタイプで使用して作成する一般的な QCOW2 イメージタイプの出力フォーマットを間違えないでください。これも QCOW2 フォーマットですが、OpenStack に固有の変更がさらに含まれています。

前提条件

  • ブループリントを作成している。

手順

  1. QCOW2 イメージの作成を開始します。

    # composer-cli compose start blueprint_name openstack
  2. ビルドの状態を確認します。

    # composer-cli compose status

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

  3. QCOW2 イメージをダウンロードします。

    # composer-cli compose image UUID
  4. OpenStack ダッシュボードにアクセスし、+Create Image をクリックします。
  5. 左側のメニューで、Admin タブを選択します。
  6. System Panel から Image をクリックします。

    Create An Image ウィザードが開きます。

  7. Create An Image ウィザードで、以下を行います。

    1. イメージの名前を入力します。
    2. Browse をクリックして QCOW2 イメージをアップロードします。
    3. Format ドロップダウンリストから、QCOW2 - QEMU Emulator を選択します。
    4. Create Image をクリックします。

      composer openstack upload image

  8. 左側のメニューで Project タブを選択します。

    1. Compute メニューから Instances を選択します。
    2. Launch Instance ボタンをクリックします。

      インスタンスの Launch Instance が開きます。

    3. Details ページで、インスタンスの名前を入力します。Next をクリックします。
    4. Source ページで、アップロードしたイメージの名前を選択します。Next をクリックします。
    5. Flavor ページで、ニーズに最適なマシンリソースを選択します。Launch をクリックします。

      composer openstack start instance

  9. イメージから任意のメカニズム (CLI または OpenStack Web UI) を使用して、イメージインスタンスを実行できます。秘密鍵を使用して、SSH 経由で、作成されたインスタンスにアクセスします。cloud-user としてログインします。

11.12. カスタマイズされた RHEL イメージを Alibaba Cloud にアップロードする準備

カスタマイズされた RHEL イメージを Alibaba Cloud にデプロイするには、まずカスタマイズされたイメージを検証する必要があります。Alibaba Cloud は、イメージを使用する前に特定の要件を満たすようにカスタムイメージを要求するため、イメージが正常に起動するように特別な設定が必要になります。

注記

RHEL Image Builder は、Alibaba の要件に準拠したイメージを生成します。ただし、Red Hat は、Alibaba image_check ツール を使用して、イメージのフォーマット準拠を確認することも推奨します。

前提条件

  • RHEL Image Builder を使用して Alibaba イメージを作成している。

手順

  1. Alibaba の image_check ツールを使用して、チェックするイメージを含むシステムに接続します。
  2. image_check ツールをダウンロードします。

    $ curl -O https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/73848/cn_zh/1557459863884/image_check
  3. イメージのコンプライアンスツールのファイルパーミッションを変更します。

    # chmod +x image_check
  4. 次のコマンドを実行して、イメージコンプライアンスツールのチェックを起動します。

    # ./image_check

    このツールは、システム設定を検証し、画面に表示されるレポートを生成します。image_check ツールは、イメージのコンプライアンスツールが実行されているフォルダーにこのレポートを保存します。

トラブルシューティング

いずれかの 検出項目 が失敗した場合は、ターミナルの指示に従って修正してください。

関連情報

11.13. カスタマイズされた RHEL イメージを Alibaba にアップロードする

RHEL Image Builder で作成した、カスタマイズした AMI イメージを Object Storage Service (OSS) にアップロードできます。

前提条件

手順

  1. OSS コンソール にログインします。
  2. 左側のバケットメニューで、イメージをアップロードするバケットを選択します。
  3. 右上のメニューで、Files タブをクリックします。
  4. Upload をクリックします。右側のダイアログウィンドウが開きます。以下を設定します。

    • アップロード先 - これを選択すると、現在 のディレクトリーまたは 指定した ディレクトリーにファイルをアップロードします。
    • ファイル ACL - アップロードしたファイルのパーミッションのタイプを選択します。
  5. Upload をクリックします。
  6. OSS コンソールにアップロードするイメージを選択します。
  7. Open をクリックします。

11.14. Alibaba Cloud へのイメージのインポート

RHEL Image Builder で作成した、カスタマイズした Alibaba RHEL イメージを Elastic Compute Service (ECS) にインポートするには、次の手順に従います。

前提条件

手順

  1. ECS コンソール にログインします。

    1. 左側のメニューで、images をクリックします。
    2. 右上にある Import Image をクリックします。ダイアログウィンドウが開きます。
    3. イメージが含まれる正しいリージョンを設定していることを確認します。以下の情報を入力します。

      1. OSS Object Address - OSS Object Address を参照
      2. Image Name
      3. オペレーティングシステム
      4. System Disk Size
      5. システムアーキテクチャー
      6. Platform: Red Hat
    4. 必要に応じて、以下の情報を指定します。

      1. Image Format - アップロードしたイメージの形式に応じて qcow2 または ami
      2. Image Description
      3. Add Images of Data Disks

        アドレスは、OSS 管理コンソールで確認できます。左側のメニューで必要なバケットを選択した後:

  2. Files セクションを選択します。
  3. 適切なイメージの右側にある Details リンクをクリックします。

    画面右側にウィンドウが表示され、イメージの詳細が表示されます。OSS オブジェクトアドレスは URL ボックスにあります。

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

    注記

    インポートプロセスの時間は、イメージのサイズによって異なります。

カスタマイズされたイメージが ECS コンソールにインポートされます。

11.15. Alibaba Cloud を使用したカスタマイズされた RHEL イメージのインスタンスの作成

Alibaba ECS コンソールを使用して、カスタマイズされた RHEL イメージのインスタンスを作成できます。

前提条件

  • OSS をアクティベートして、カスタムイメージをアップロードしている。
  • イメージを ECS コンソールに正常にインポートしている。Alibaba へのイメージのインポート を参照してください。

手順

  1. ECS コンソール にログインします。
  2. 左側のメニューで、インスタンス を選択します。
  3. 右上隅にある インスタンスの作成 をクリックします。新しいウィンドウにリダイレクトされます。
  4. 必要な情報をすべて完了します。詳細は、Creating an instance by using the wizard を参照してください。
  5. Create Instance をクリックして、順番を確認します。

    注記

    サブスクリプションによっては、Create Instance ではなく Create Order が表示されます。

その結果、アクティブなインスタンスを Alibaba ECS Console からデプロイする準備が整いました。

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.