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


Red Hat Enterprise Linux 10

RHEL 10.0 で RHEL Image Builder を使用してカスタマイズされたシステムイメージを作成する

Red Hat Customer Content Services

概要

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

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 を使用して、Red Hat Enterprise Linux システムイメージをカスタマイズできます。たとえば、クラウドプラットフォームへのデプロイに使用するシステムイメージを作成できます。RHEL Image Builder は、出力タイプごとの設定の詳細を自動的に処理します。したがって、手動でイメージを作成する方法よりも使いやすく、作業が迅速になります。RHEL Image Builder 機能にアクセスするには、image-builder ツールまたは RHEL Web コンソールのグラフィカルユーザーインターフェイスを使用します。

テクノロジープレビューとして利用可能な image-builder ツールには、次の特徴があります。

  • インストールと環境設定を簡素化します。
  • コンテナー対応のデーモンレスモデルを使用して、クライアント/サーバーアーキテクチャーの複雑さを排除できます。
  • パイプラインの自動化とコンテナーベースのビルドのために image-builder を使用できます。
  • image-builder は、他のイメージをビルドするためのポータブルな環境として使用できるコンテナーイメージの作成をサポートしています。

1.1. RHEL Image Builder の用語

RHEL Image Builder では、その中核となる概念を表すために、特定の用語が使用されます。

ブループリント

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

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

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

1.2. RHEL Image Builder の出力形式

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

Expand
表1.1 RHEL Image Builder の出力形式
説明CLI 名ファイル拡張子

アーキテクチャー

Amazon Web Services

ami

[filename]`.ami

aarch64x86_64

ディスクアーカイブ

tar

.tar

aarch64x86_64ppc64les390x

Google Cloud

gce

.tar.gz

x86_64

Microsoft Azure

vhd

.vhd

aarch64x86_64

OpenStack

qcow2

.qcow2

aarch64x86_64ppc64les390x

Oracle Cloud Infrastructure

.oci

.qcow2

x86_64

QEMU イメージ

qcow2

.qcow2

aarch64x86_64ppc64les390x

RHEL インストーラー

image-installer

.iso

aarch64x86_64

VMware vSphere

vmdk

.vmdk

x86_64

VMware vSphere

ova

.ova

x86_64

Vagrant

vagrant-libvirt

.qcow2

aarch64x86_64

Windows Subsystem for Linux

wsl

.wsl

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

# image-builder list
Copy to Clipboard Toggle word wrap

1.3. イメージビルドでサポートされているアーキテクチャー

RHEL Image Builder は、複数のアーキテクチャーのイメージのビルドをサポートしています。

サポートされているアーキテクチャーは次のとおりです。

  • AMD および Intel 64 ビット (x86_64)
  • ARM64 (aarch64)
  • IBM Z (s390x)
  • IBM POWER システム (ppc64)

ただし、RHEL Image Builder はマルチアーキテクチャービルドをサポートしていません。実行しているのと同じシステムアーキテクチャーのイメージのみをビルドします。たとえば、RHEL Image Builder が x86_64 システムで実行している場合は、x86_64 アーキテクチャーのイメージのみをビルドできます。

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

RHEL Image Builder は、カスタムのシステムイメージを作成するツールです。RHEL Image Builder を使用する前に、RHEL Image Builder をインストールする必要があります。

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

RHEL Image Builder を実行するホストは、最小システム要件を満たしている必要があります。

Expand
表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 をインストールして、image-builder パッケージのすべての機能にアクセスできるようにします。

前提条件

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

手順

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

    # dnf install image-builder cockpit-image-builder
    Copy to Clipboard Toggle word wrap
    • image-builder は、カスタマイズされた RHEL オペレーティングシステムイメージをビルドし、CLI インターフェイスへのアクセスを可能にするサービスです。
    • cockpit-image-builder は、Web UI インターフェイスへのアクセスを可能にするパッケージです。Web コンソールは、cockpit-image-builder パッケージの依存関係としてインストールされます。
  2. Web コンソールで RHEL Image Builder を使用する場合は、それを有効にして起動します。

    # systemctl enable --now cockpit.socket
    Copy to Clipboard Toggle word wrap

    image-buildercockpit サービスは、初回アクセス時に自動的に起動します。

検証

  • image-builder を実行してインストールが機能することを確認します。

    # image-builder list
    Copy to Clipboard Toggle word wrap

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

リポジトリーを追加したり、デフォルトのベースリポジトリーをオーバーライドしたりできます。

RHEL Image Builder では、以下のタイプのリポジトリーを使用できます。

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

3.1. RHEL Image Builder へのリポジトリーの追加

イメージのビルド時に、image-builder ツールと --extra-repo フラグを使用して、イメージに追加のカスタムリポジトリーを追加できます。

前提条件

  • カスタムリポジトリーの URL がある。

手順

  • イメージをビルドし、追加のリポジトリーを RHEL Image Builder に加えます。

    $ image-builder build <image-type> \
    --add-repo=<file:///path/to/my/repo> \
    Copy to Clipboard Toggle word wrap

    イメージのビルド中にリポジトリーの内容が使用可能になり、依存関係ソルバーがそのリポジトリーからパッケージを取得します。たとえば、リポジトリーに上位バージョンの libc または kernel が含まれている場合、デフォルトのリポジトリーよりもそれらが選択されます。

image-builder ツールと --extra-repo フラグを使用すると、イメージのビルド時に追加のカスタムリポジトリーを追加したり、イメージにディストリビューションを指定したりできます。

前提条件

  • カスタムリポジトリー URL がある。

手順

  • イメージをビルドし、追加のリポジトリーソースと選択したディストリビューションシステムを RHEL Image Builder に追加します。

    $ image-builder build <image-type> \
    --add-repo <file:///path/to/my/repo> \
    --distro rhel-10.0 \
    Copy to Clipboard Toggle word wrap

3.3. イメージビルド中のシステムリポジトリーのオーバーライド

イメージのビルド中にデフォルトのベースリポジトリーをオーバーライドします。

前提条件

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

手順

  1. * イメージをビルドし、追加のリポジトリーを RHEL Image Builder に加えます。

    $ image-builder build <image-type> \
    --force-repo=<file:///path/to/my/repo> \
    Copy to Clipboard Toggle word wrap
    警告

    ここで定義したリポジトリーがすべての依存関係を解決するために使用されることに注意してください。これにより、システムに問題が発生する可能性があります。

3.4. Satellite CV をコンテンツソースとして設定および使用する

RHEL Image Builder を使用してイメージをビルドするためのリポジトリーとして、Satellite のコンテンツビュー (CV) を使用できます。Red Hat コンテンツ配信ネットワーク (CDN) の公式リポジトリーではなく、Satellite リポジトリーから取得するように、Satellite に登録されているホストのリポジトリー参照を設定します。

前提条件

手順

  1. 現在設定されている Satellite リポジトリーの中から、リポジトリーの URL を確認します。

    次の出力は例です。

    https://satellite6.example.com/pulp/content/<your_org>/<your_env>/<your_cv>/content/dist/rhel10/10/x86_64/baseos/os
    Copy to Clipboard Toggle word wrap
  2. イメージをビルドし、Satellite リポジトリーを RHEL Image Builder に加えます。

    $ image-builder build <image-type> \
    --add-repo=<file:///path/to/satellite/repo> \
    Copy to Clipboard Toggle word wrap

3.5. RHEL Image Builder でイメージをビルドするためのリポジトリーとして Satellite CV を使用する

カスタムイメージをビルドするためのリポジトリーとして Satellite のコンテンツビュー (CV) を使用するように RHEL Image Builder を設定します。

前提条件

手順

  1. Satellite Web UI で、Content に移動し、Products を見つけて、Product を選択し、使用するリポジトリーをクリックします。
  2. Published フィールドで、セキュアな URL (HTTPS) を検索してコピーします。
  3. コピーした URL を Red Hat Image Builder リポジトリーのベース URL として使用します。RHEL Image Builder へのカスタムサードパーティーリポジトリーの追加 を参照してください。

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

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

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

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

デフォルトでは、image-builder コマンドは root ユーザーとして実行する必要があります。

コマンドラインのワークフローの概要は次のとおりです。

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

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

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

RHEL Image Builder は、.toml 形式と .json 形式の両方のブループリントをサポートしています。

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

ブループリントのメタデータ
name = "<blueprint_name>"
description = "<long_form_description_text>"
version = "<version>"
Copy to Clipboard Toggle word wrap

<blueprint_name> フィールドと <long_form_description_text> フィールドは、ブループリントの名前と説明です。

<version> は、セマンティックバージョニングスキームに従ったバージョン番号であり、ブループリントファイル全体を通して 1 回だけ記述されます。

イメージに追加するグループ
[[groups]]
name = "<group_name>"
Copy to Clipboard Toggle word wrap

<group_name> エントリーには、イメージにインストールするパッケージのグループを記述します。グループは、次のパッケージカテゴリーを使用します。

  • 必須
  • デフォルト
  • 任意

    group-name はグループの名前です (例: anaconda-toolswidgetwheelusers)。ブループリントは、必須パッケージとデフォルトパッケージをインストールします。任意のパッケージを選択するメカニズムはありません。

イメージに追加するパッケージ
[[packages]]
name = "<package_name>"
version = "<package_version>"
Copy to Clipboard Toggle word wrap

package-name は、httpdgdb-doccoreutils などのパッケージの名前です。

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

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

    追加するパッケージごとに、このブロックを繰り返し記述します。

    注記

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

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

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

前提条件

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

手順

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

    name = "<blueprint_name>"
    description = "<long_form_description>"
    version = "<0.0.1>"
    modules = []
    groups = []
    Copy to Clipboard Toggle word wrap

    <blueprint_name><long_form_description> は、ブループリントの名前と説明に置き換えます。

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

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

    [[packages]]
    name = "<package_name>"
    version = "<package_version>"
    Copy to Clipboard Toggle word wrap

    <package_name> は、httpdgdb-doccoreutils などのパッケージ名に置き換えます。

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

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

    [customizations.kernel]
    append = "nosmt=force"
    Copy to Clipboard Toggle word wrap

    利用可能な追加のカスタマイズは、サポートされているイメージのカスタマイズ を参照してください。

    [][[]] は TOML で表現される異なるデータ構造であることに注意してください。

    • [customizations.kernel] ヘッダーは、キーとキーに対応する値のペアの集合によって定義される単一のテーブルを表します (例: append = "nosmt=force")。
    • [[packages]] ヘッダーはテーブルの配列を表します。最初のインスタンスで、配列とその最初のテーブル要素を定義します (例: name = "package-name"version = "package-version")。後続の各インスタンスで、指定の順序で、その配列内に新しいテーブル要素を作成して定義します。
  4. ファイルを、たとえば <blueprint_name>.toml として保存し、テキストエディターを閉じます。

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

RHEL Image Builder のコマンドラインインターフェイスを使用してカスタマイズした RHEL イメージをビルドするには、ブループリントとイメージタイプを指定する必要があります。必要に応じて、ディストリビューションを指定することもできます。

ディストリビューションを指定しない場合は、ホストシステムと同じディストリビューションとバージョンが使用されます。アーキテクチャーもホストのアーキテクチャーと同じになります。

前提条件

  • イメージのブループリントを用意した。

手順

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

    # image-builder list
    Copy to Clipboard Toggle word wrap
  2. Compose を起動します。

    # image-builder build <image_type> --blueprint <blueprint_name>
    Copy to Clipboard Toggle word wrap

    <blueprint_name> はブループリントの名前に置き換え、<image_type> はイメージのタイプに置き換えます。
    ディストリビューションを指定しない場合、インストールされているものと同じディストリビューションが image-builder によって使用されます。

    Compose プロセスが開始します。完了するまでに数分かかります。イメージの準備ができるまで、イメージビルドの進行状況を追うことができます。

    イメージのビルドプロセスが完了すると、作成先のディレクトリーでイメージを使用できるようになります。

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

RHEL Image Builder のコマンドラインインターフェイスには、image-builder 用の次の基本コマンドが用意されています。

利用可能なすべてのイメージをリスト表示する
# image-builder list
Copy to Clipboard Toggle word wrap
イメージを名前でフィルタリングする
# image-builder list-images --filter "rhel"
Copy to Clipboard Toggle word wrap
ディストリビューションとアーキテクチャーでフィルタリングする
# image-builder list-images --filter "distro:rhel-10 arch:s390x"
Copy to Clipboard Toggle word wrap
出力形式を変更する
# image-builder list-images --filter "distro:rhel-10" --format=json | jq
Copy to Clipboard Toggle word wrap
# image-builder list-images --filter "distro:rhel-10" --format=shell
Copy to Clipboard Toggle word wrap
イメージのビルド
# image-builder build <image-type>
Copy to Clipboard Toggle word wrap

<image-type> は、qcow2wsl など、RHEL Image Builder でサポートされているイメージタイプです。

ディストリビューションを指定する
# image-builder build <image-type> --distro <distro>
Copy to Clipboard Toggle word wrap
イメージ作成の進行状況と詳細なステップを表示する
# image-builder build <image-type> --distro <distro> --with-buildlog
Copy to Clipboard Toggle word wrap
異なるアーキテクチャー向けのビルド
# image-builder build <image-type> --arch=riscv64
Copy to Clipboard Toggle word wrap
カスタムリポジトリーをビルドに追加する
# image-builder build <image-type> --add-repo=<file:///path/to/my/repo>
Copy to Clipboard Toggle word wrap

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

RHEL Image Builder を使用してカスタムイメージを設定する場合、そのイメージで使用されるデフォルトのサービスは、image-builder ユーティリティーを使用する RHEL バージョンリリースやイメージタイプなどの仕様によって決まります。

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

Expand
表4.1 イメージタイプの作成をサポートするために有効化されるサービス
イメージタイプデフォルトで有効化されるサービス

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

tar

デフォルトでは他のサービスは有効化されません

vhd

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

vmdk

sshd、chronyd、vmtoolsd、cloud-init

注記

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

第5章 サポートされているイメージのカスタマイズ

RPM パッケージの追加、サービスの有効化、カーネルのコマンドラインパラメーターのカスタマイズなど、ブループリントにカスタマイズを追加することで、イメージをカスタマイズできます。

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

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

distro フィールドを使用して、イメージを作成するときやブループリント内の依存関係を解決するときに使用するディストリビューションを指定できます。

distro フィールドが空白のままの場合、ブループリントはホストのオペレーティングシステムディストリビューションを自動的に使用します。ディストリビューションを指定しない場合、ブループリントはホストディストリビューションを使用します。ホストオペレーティングシステムをアップグレードすると、指定されたディストリビューションがないブループリントは、アップグレードされたオペレーティングシステムのバージョンを使用してイメージをビルドします。

新しいシステムで古いメジャーバージョンのイメージをビルドできます。たとえば、RHEL 10 ホストを使用して、RHEL 9 および RHEL 8 のイメージを作成できます。ただし、古いシステムで新しいメジャーバージョンのイメージをビルドすることはできません。

重要

RHEL Image Builder ホストとは異なるオペレーティングシステムイメージをビルドすることはできません。たとえば、RHEL システムを使用して Fedora または CentOS のイメージをビルドすることはできません。

前提条件

  • ブループリントを作成した。

手順

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

    name = "blueprint_name"
    description = "blueprint_version"
    version = "0.1"
    distro = "different_minor_version"
    Copy to Clipboard Toggle word wrap

    以下に例を示します。

    name = "tmux"
    description = "tmux image with openssh"
    version = "1.2.16"
    distro = "rhel-9.6"
    Copy to Clipboard Toggle word wrap

    別のマイナーバージョンをビルドするには、"different_minor_version" を置き換えます。たとえば、RHEL 9.6 イメージをビルドする場合は、distro = "rhel-96" を使用します。RHEL 9.5 イメージでは、RHEL 9.4、RHEL 9.3、およびそれ以前のリリースなどのマイナーバージョンをビルドできます。

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

パッケージグループを使用してブループリントをカスタマイズします。イメージにインストールするパッケージのグループを、groups リストに記述します。

パッケージグループはリポジトリーのメタデータで定義されます。各グループには、主にユーザーインターフェイスでの表示に使用されるわかりやすい名前と、キックスタートファイルでよく使用される ID があります。この場合、ID を使用してグループをリストする必要があります。グループでは、必須、デフォルト、任意の 3 つの方法でパッケージを分類できます。ブループリントには、必須パッケージとデフォルトパッケージのみがインストールされます。任意のパッケージを選択することはできません。

name 属性は、必須の文字列であり、リポジトリー内のパッケージグループ ID と正確に一致する必要があります。

注記

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

前提条件

  • ブループリントを作成した。

手順

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

    [[groups]]
    name = "<group_name>"
    Copy to Clipboard Toggle word wrap

    group_name は、グループの名前に置き換えます。以下に例を示します。

    [[groups]]
    name = "anaconda-tools"
    Copy to Clipboard Toggle word wrap

5.3. パッケージの選択

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

  • name 属性は必須の文字列です。完全一致として指定することも、ワイルドカードの * や、文字一致の ? を使用したファイルシステム Glob として指定することもできます。
  • version 属性はオプションの文字列です。完全一致として指定することも、ワイルドカードの * や、文字一致の ? を使用したファイルシステム Glob として指定することもできます。バージョンを入力しない場合、システムはリポジトリー内の最新バージョンを使用します。

仮想プロバイダーをパッケージ名として使用する場合、バージョン glob に * を指定する必要があります。その結果、プロバイダーが独自の名前とバージョンを持つ複数のパッケージに展開されるため、ブループリントをフリーズすることができなくなります。

注記

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

前提条件

  • ブループリントを作成した。

手順

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

    [[packages]]
    name = "<package_name>"
    Copy to Clipboard Toggle word wrap

    package_name は、グループの名前に置き換えます。たとえば、tmux-2.9aopenssh-server-8.* パッケージなどです。

    [[packages]]
    name = "tmux"
    version = "2.9a"
    
    [[packages]]
    name = "openssh-server"
    version = "8.*"
    Copy to Clipboard Toggle word wrap

5.4. コンテナーの埋め込み

ブループリントをカスタマイズして、最新の RHEL コンテナーを埋め込むことができます。ソースを含むオブジェクトと、必要に応じて tls-verify 属性をコンテナーリストに含めます。

イメージに埋め込むコンテナーイメージを、コンテナーリストのエントリーに記述します。

  • source - 必須フィールド。レジストリーにあるコンテナーイメージへの参照です。この例では、registry.access.redhat.com レジストリーを使用します。タグのバージョンを指定できます。デフォルトのタグバージョンは latest です。
  • name - ローカルレジストリー内のコンテナーの名前。
  • tls-verify - ブール値フィールド。tls-verify ブール値フィールドは、Transport Layer Security を制御します。デフォルト値は true です。

埋め込まれたコンテナーは自動的に起動しません。これを起動するには、systemd ユニットファイルまたは quadlets を作成し、ファイルをカスタマイズします。

前提条件

  • ブループリントを作成した。

手順

  • registry.access.redhat.com/ubi10/ubi:latest のコンテナーとホストのコンテナーを埋め込むには、ブループリントに次のカスタマイズを追加します。

    [[containers]]
    source = "registry.access.redhat.com/ubi10/ubi:latest"
    name = local_name
    tls-verify = true
    
    [[containers]]
    source = "localhost/test:latest"
    local-storage = true
    Copy to Clipboard Toggle word wrap

    containers-auth.json ファイルを使用して、保護されたコンテナーリソースにアクセスできます。コンテナーレジストリーの認証情報 を参照してください。

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

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

前提条件

  • ブループリントを作成した。

手順

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

    [customizations]
    hostname = "<base_image>"
    Copy to Clipboard Toggle word wrap

5.6. ブループリントでのホストリソースの指定

URI フィールドを使用すると、外部ソースからファイルを参照できます。

ブループリントファイルのカスタマイズ構造の URI フィールドを使用すると、外部の場所からファイルを参照してソースとすることができます。これにより、ビルドシステムのカスタマイズがより柔軟になり、より適応性の高いビルドエクスペリエンスが実現します。ブループリントに直接含まれるファイルだけに制限されることがなくなるためです。

現在、このカスタマイズはファイル URL のみをサポートしていることに注意してください。

前提条件

  • ブループリントを作成した。

手順

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

    [customizations]
    name = "<user_name>"
    description = "<user_description>"
    uri = "<file://hostname/path>"
    Copy to Clipboard Toggle word wrap

    "file://hostname/path" は、たとえば "file://localhost/etc/fstab" に置き換えます。

5.7. 追加ユーザーの指定

ユーザーをイメージに追加し、必要に応じて 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 = <uid_number>
    gid = <gid_number>
    Copy to Clipboard Toggle word wrap
    [[customizations.user]]
    name = "admin"
    description = "Administrator account"
    password = "$6$CHO2$3rN8eviE2t50lmVyBYihTgVRHcaecmeCk31L..."
    key = "PUBLIC SSH KEY"
    home = "/srv/widget/"
    shell = "/usr/bin/bash"
    groups = ["widget", "users", "wheel"]
    uid = 1200
    gid = 1200
    expiredate = 12345
    Copy to Clipboard Toggle word wrap

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

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

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

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

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

5.8. 追加グループの指定

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

前提条件

  • ブループリントを作成した。

手順

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

    [[customizations.group]]
    name = "<group_name>"
    gid = <number>
    Copy to Clipboard Toggle word wrap

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

    [[customizations.group]]
    name = "widget"
    gid = 1130
    Copy to Clipboard Toggle word wrap

5.9. 既存ユーザーの SSH 鍵の設定

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

前提条件

  • ブループリントを作成した。

手順

  • 既存ユーザーの SSH 鍵を設定してブループリントをカスタマイズします。

    [[customizations.sshkey]]
    user = "root"
    key = "PUBLIC-SSH-KEY"
    Copy to Clipboard Toggle word wrap

    以下に例を示します。

    [[customizations.sshkey]]
    user = "root"
    key = "SSH key for root"
    Copy to Clipboard Toggle word wrap

5.10. カーネル引数の追加

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

前提条件

  • ブループリントを作成した。

手順

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

    [customizations.kernel]
    append = "<kernel_option>"
    Copy to Clipboard Toggle word wrap

    以下に例を示します。

    [customizations.kernel]
    name = "kernel-debug"
    append = "nosmt=force"
    Copy to Clipboard Toggle word wrap

5.11. リアルタイムカーネルを使用した RHEL イメージのビルド

リアルタイムカーネル (kernel-rt) を使用して RHEL イメージをビルドします。/usr/share/image-builder/repositories/ ディレクトリーにある .json を使用してリポジトリーをオーバーライドし、kernel-rt をデフォルトのカーネルとして選択するイメージをビルドします。イメージをシステムにデプロイし、リアルタイムカーネル機能を使用します。

注記

リアルタイムカーネルは、Red Hat Enterprise Linux の動作認定を受けた AMD64 および Intel 64 サーバープラットフォームで動作します。

前提条件

  • システムが登録され、RHEL が RHEL for Real Time サブスクリプションに割り当てられている。

手順

  1. kernel.json ファイルを作成し、RT カーネルリポジトリーを含めます。

        {
          "name": "kernel-rt",
          "baseurl": "https://cdn.redhat.com/content/dist/rhel10/10/x86_64/rt/os",
          "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBEr………fg==\n=UZd/\n-----END PGP PUBLIC KEY BLOCK-----\n",
          "rhsm": true,
          "check_gpg": true
        },
    Copy to Clipboard Toggle word wrap
  2. ブループリントを作成します。ブループリントに、"[customizations.kernel]" カスタマイズを追加します。以下は、ブループリントに "[customizations.kernel]" を追加した例です。

    name = "rt-kernel-image"
    description = ""
    version = "2.0.0"
    modules = []
    groups = []
    distro = "rhel-10.0"
    [[customizations.user]]
    name = "admin"
    password = "admin"
    groups = ["users", "wheel"]
    [customizations.kernel]
    name = "kernel-rt"
    append = ""
    Copy to Clipboard Toggle word wrap
  3. 作成したブループリントからイメージをビルドします。次の例では、.qcow2 イメージをビルドします。

    # image-builder build qcow2 -- blueprint rt-kernel-image --data-dir kernel.json
    Copy to Clipboard Toggle word wrap
  4. ビルドしたイメージを、リアルタイムカーネル機能を使用するシステムにデプロイします。

検証

  • イメージから仮想マシンを起動した後、デフォルトのカーネルとして kernel-rt が正しく選択されたイメージがビルドされていることを確認します。

    $ cat /proc/cmdline
    BOOT_IMAGE=(hd0,got3)/vmlinuz-6.12.0-0.el10_0_.x86_64+rt...
    Copy to Clipboard Toggle word wrap

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

ブループリントをカスタマイズして、タイムゾーンと Network Time Protocol (NTP) を設定できます。

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

前提条件

  • ブループリントを作成した。

手順

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

    [customizations.timezone]
    timezone = "TIMEZONE"
    ntpservers = "NTP_SERVER"
    Copy to Clipboard Toggle word wrap

    以下に例を示します。

    [customizations.timezone]
    timezone = "US/Eastern"
    ntpservers = ["0.north-america.pool.ntp.org", "1.north-america.pool.ntp.org"]
    Copy to Clipboard Toggle word wrap
    注記

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

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

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

前提条件

  • ブループリントを作成した。

手順

  • ロケール設定を行います。

    [customizations.locale]
    languages = ["<language>"]
    keyboard = "<keyboard>"
    Copy to Clipboard Toggle word wrap

    以下に例を示します。

    [customizations.locale]
    languages = ["en_US.UTF-8"]
    keyboard = "us"
    Copy to Clipboard Toggle word wrap
  • 言語でサポートされている値をリスト表示します。

    $ localectl list-locales
    Copy to Clipboard Toggle word wrap
  • キーボードでサポートされている値をリスト表示します。

    $ localectl list-keymaps
    Copy to Clipboard Toggle word wrap

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

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

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

注記

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

前提条件

  • ブループリントを作成した。

手順

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

    [customizations.firewall]
    ports = ["<ports>"]
    Copy to Clipboard Toggle word wrap

    ここで、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"]
    Copy to Clipboard Toggle word wrap

    ポートのリストを有効または無効にする際には、ポート番号または /etc/services のサービス名を使用できます。

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

    [customizations.firewall.services]
    enabled = ["<services>"]
    disabled = ["<services>"]
    Copy to Clipboard Toggle word wrap
  • 利用可能なファイアウォールサービスを確認できます。

    $ firewall-cmd --get-services
    Copy to Clipboard Toggle word wrap

    以下に例を示します。

    [customizations.firewall.services]
    enabled = ["ftp", "ntp", "dhcp"]
    disabled = ["telnet"]
    Copy to Clipboard Toggle word wrap
    注記

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

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

起動時に有効にするサービスを制御できます。一部のイメージタイプでは、イメージが正しく機能するように、サービスがすでに有効または無効になっています。この設定をオーバーライドすることはできません。

ブループリント内の [customizations.services] 設定は、イメージテンプレートに元々存在しているサービスのリストにサービスを追加するものではありますが、これらのサービスを置き換えるものではありません。

前提条件

  • ブループリントを作成した。

手順

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

    [customizations.services]
    enabled = ["services"]
    disabled = ["services"]
    Copy to Clipboard Toggle word wrap

    以下に例を示します。

    [customizations.services]
    enabled = ["sshd", "cockpit.socket", "httpd"]
    disabled = ["postfix", "telnetd"]
    Copy to Clipboard Toggle word wrap

5.16. ISO イメージへのキックスタートファイルの注入

[customizations.installer] ブループリントのカスタマイズを使用すると、image installer などの ISO インストーラーのビルドに独自のキックスタートファイルを追加して、ベアメタルデプロイメント用の ISO イメージをビルドする際の柔軟性を高めることができます。

警告

キックスタートはシステム上の最初のディスクを自動的に再フォーマットするように設定されています。そのため、既存のオペレーティングシステムまたはデータを有するマシンで ISO を起動すると、破壊的な結果を招く可能性があります。

次の中から、独自のキックスタートファイルを追加する方法を選択できます。

  • インストールプロセス中にすべての値を設定する。
  • キックスタートで unattended = true フィールドを有効にし、デフォルト設定を使用した完全に無人のインストールを実行する。
  • キックスタートフィールドを使用して独自のキックスタートを注入する。この方法では、すべての必須フィールドを指定した場合は完全に無人のインストールが実行され、一部のフィールドが欠けている場合はインストールプログラムによって入力が要求されることになります。

    Anaconda インストーラーの ISO イメージタイプでは、次のブループリントのカスタマイズがサポートされています。

    [customizations.installer]
    unattended = true
    sudo-nopasswd = ["user", "%wheel"]
    Copy to Clipboard Toggle word wrap

    unattended: インストールを完全に自動化するキックスタートファイルを作成します。これには、デフォルトで次のオプションの設定が含まれます。

  • テキスト表示モード
  • en_US.UTF-8 言語とロケール
  • us keyboard レイアウト
  • UTC time zone
  • zerombrclearpart、および autopart による最初のディスクの自動的なワイプおよびパーティション設定
  • dhcpauto-activation を有効にするネットワークオプション

以下に例を示します。

liveimg --url file:///run/install/repo/liveimg.tar.gz
lang en_US.UTF-8
keyboard us
timezone UTC
zerombr
clearpart --all --initlabel
text
autopart --type=plain --fstype=xfs --nohome
reboot --eject
network --device=link --bootproto=dhcp --onboot=on --activate
Copy to Clipboard Toggle word wrap

sudo-nopasswd: インストール後に /etc/sudoers.d にドロップインファイルを作成し、指定のユーザーとグループがパスワードなしで sudo を実行できるようにするスニペットをキックスタートファイルに追加します。グループには % という接頭辞を付ける必要があります。たとえば、値を ["user", "%wheel"] に設定すると、次のようなキックスタートの %post セクションが作成されます。

%post
echo -e "user\tALL=(ALL)\tNOPASSWD: ALL" > "/etc/sudoers.d/user"
chmod 0440 /etc/sudoers.d/user
echo -e "%wheel\tALL=(ALL)\tNOPASSWD: ALL" > "/etc/sudoers.d/%wheel"
chmod 0440 /etc/sudoers.d/%wheel
restorecon -rvF /etc/sudoers.d
%end
Copy to Clipboard Toggle word wrap

または、次のカスタマイズを使用して、カスタムのキックスタートを含めることもできます。

[customizations.installer.kickstart]
contents = """
text --non-interactive
zerombr
clearpart --all --initlabel --disklabel=gpt
autopart --noswap --type=lvm
network --bootproto=dhcp --device=link --activate --onboot=on
"""
Copy to Clipboard Toggle word wrap

image-builder は、image-installer イメージタイプに関連する場合、システムをインストールするコマンド liveimg を自動的に追加します。[customizations.installer.kickstart] によるカスタマイズを、他のインストーラーカスタマイズと組み合わせて使用することはできません。

5.17. パーティションモードの指定

ビルドするディスクイメージをパーティション設定する方法を選択するには、partitioning_mode 変数を使用します。

サポートされている次のモードでイメージをカスタマイズできます。

  • auto-lvm: ファイルシステムのカスタマイズが 1 つ以上ない限り、raw パーティションモードを使用します。ある場合は、LVM パーティションモードを使用します。
  • lvm: 追加のマウントポイントがない場合でも、常に LVM パーティションモードを使用します。
  • raw: マウントポイントが 1 つ以上ある場合でも、raw パーティションを使用します。

前提条件

  • ブループリントを作成した。

手順

  • 次のカスタマイズを使用して、partitioning_mode 変数を使用してブループリントをカスタマイズできます。

    [customizations]
    partitioning_mode = "lvm"
    Copy to Clipboard Toggle word wrap

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

ブループリントでカスタムファイルシステム設定を指定できるため、デフォルトのレイアウト設定ではなく、特定のディスクレイアウトでイメージを作成できます。

ブループリントでデフォルト以外のレイアウト設定を使用すると、次の利点が得られます。

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

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

  • image-installer

さらに、次のイメージタイプはパーティション設定されたオペレーティングシステムイメージを作成しないため、ファイルシステムのカスタマイズをサポートしません。

  • tar
  • container

RHEL 9.4 より前のリリースディストリビューションの場合、ブループリントは次の mountpoints とそのサブディレクトリーをサポートしています。

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

次のマウントポイントとそのサブディレクトリーに任意のカスタムマウントポイントを指定することはできません。

  • /bin
  • /dev
  • /etc
  • /lib
  • /lib64
  • /lost+found
  • /proc
  • /run
  • /sbin
  • /sys
  • /sysroot
  • /var/lock
  • /var/run

ブループリントで /usr カスタムマウントポイントのファイルシステムはカスタマイズできますが、そのサブディレクトリーはカスタマイズできません。

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

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

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

警告

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

5.18.1. ブループリントでのカスタムファイルの指定

ブループリントのカスタマイズ機能である [[customizations.files]] を使用すると、新しいテキストファイルを作成したり、既存のファイルを変更したりできます。

+ 警告: これにより、既存のコンテンツがオーバーライドされる可能性があります。* 作成するファイルのユーザーとグループの所有権を設定する。* モード許可を 8 進数形式で設定する。

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

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

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

警告

イメージ内にすでに存在するディレクトリーパスに対して modeuser、または group を指定した状態で customizations.directories を使用すると、既存ディレクトリーの所有権や権限の変更を防ぐために、イメージのビルドが失敗します。

5.18.2. ブループリントでのカスタムディレクトリーの指定

ブループリントのカスタマイズ機能である [[customizations.directories]] を使用すると、ディレクトリーを作成または変更できます。

カスタマイズにより、次のことが可能になります。

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

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

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

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

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

以下のカスタマイズが可能です。

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

    [[customizations.filesystem]]
    mountpoint = "MOUNTPOINT"
    minsize = MINIMUM-PARTITION-SIZE
    Copy to Clipboard Toggle word wrap

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

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

    [[customizations.filesystem]]
    mountpoint = "/opt"
    minsize = "20 GiB"
    Copy to Clipboard Toggle word wrap
    [[customizations.filesystem]]
    mountpoint = "/var"
    minsize = "1 GiB"
    Copy to Clipboard Toggle word wrap
  • minsize を設定して最小パーティションを定義します。以下に例を示します。

    [[customizations.filesystem]]
    mountpoint = "/var"
    minsize = 2147483648
    Copy to Clipboard Toggle word wrap
  • [[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
    Copy to Clipboard Toggle word wrap

    ブループリントの各エントリーを説明します。

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

    ブループリントの各エントリーを説明します。

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

5.19. ブループリントでのボリュームグループ名および論理ボリューム名の指定

ブループリントでボリュームグループと論理ボリュームの名前を指定できます。

RHEL Image Builder は次の操作に使用できます。

  • 高度なパーティションレイアウトを使用して RHEL ディスクイメージを作成します。カスタムのマウントポイント、LVM ベースのパーティション、LVM ベースの SWAP を使用してディスクイメージを作成できます。たとえば、config.toml ファイルを使用して、/ および /boot ディレクトリーのサイズを変更できます。
  • 使用するファイルシステムを選択します。ext4xfs のどちらかを選択できます。
  • スワップパーティションと LV を追加します。ディスクイメージに LV ベースの SWAP を含めることができます。
  • LVM エンティティーの名前を変更します。イメージ内の論理ボリューム (LV) とボリュームグループ (VG) にカスタム名を付けることができます。

次のオプションはサポートされていません。

  • 1 つのイメージに複数の PV または VG を含める
  • SWAP ファイル
  • /dev/shm/tmp などの非物理パーティションのマウントオプション

ファイルシステムが存在する VG および LG にカスタム名を追加できます。次に例を示します。

[[customizations.disk.partitions]]
type = "plain"
label = "data"
mountpoint = "/data"
fs_type = "ext4"
minsize = "50 GiB"

[[customizations.disk.partitions]]
type = "lvm"
name = "mainvg"
minsize = "20 GiB"

[[customizations.disk.partitions.logical_volumes]]
name = "rootlv"
mountpoint = "/"
label = "root"
fs_type = "ext4"
minsize = "2 GiB"

[[customizations.disk.partitions.logical_volumes]]
name = "homelv"
mountpoint = "/home"
label = "home"
fs_type = "ext4"
minsize = "2 GiB"

[[customizations.disk.partitions.logical_volumes]]
name = "swaplv"
fs_type = "swap"
minsize = "1 GiB"
Copy to Clipboard Toggle word wrap

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

RHEL Image Builder は、カスタムのシステムイメージを作成するツールです。RHEL Image Builder を制御してカスタムシステムイメージを作成する場合は、Web コンソールインターフェイスを使用できます。

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

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

前提条件

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

手順

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

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

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

カスタマイズした RHEL システムイメージを作成する前に、ブループリントを作成する必要があります。カスタマイズはすべて任意です。

前提条件

手順

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

    Images ダイアログボックスが開きます。

  2. Image output ページで、次の手順を実行します。

    1. Release バージョンと Architecture を選択します。
    2. ターゲット環境を 1 つまたは複数選択します。
    3. Next をクリックします。
  3. オプション: File system configuration ページで、イメージファイルシステムのパーティションを Use automatic partitioning または Manually configure partitions を選択します。パーティションを手動で設定するには、次の手順を実行します。

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

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

        • /app
        • /boot
        • /data
        • /home
        • /opt
        • /srv
        • /tmp
        • /usr
        • /var

          Mount point に追加のパスを追加することもできます。たとえば、マウントポイントとして /var を選択し、追加のパスとして /tmp を加えると、/var/tmp になります。選択したマウントポイントの種類によっては、ファイルシステムの種類が xfs に変更されます。

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

        Minimum size を設定するのは、パーティションサイズが小さすぎて正常に機能するイメージを作成できない場合に、RHEL Image Builder がパーティションサイズを拡張することがあるためです。

    3. パーティションを追加するには、Add partition ボタンをクリックします。"Duplicate partitions: Only one partition at each mount point can be created." というエラーメッセージが表示される場合は、次のいずれかの操作を実行すると修正できます。

      • Remove ボタンをクリックして、重複したパーティションを削除します。
      • 作成するパーティションの新しいマウントポイントを選択します。
    4. パーティション設定が完了したら、Next をクリックします。
  4. オプション: Additional packages ページで、次の手順を実行します。

    1. Available packages の検索で、パッケージ名を入力します。
    2. ボタンをクリックして、Chosen packages フィールドに移動します。
    3. 前のステップを繰り返して、必要な数のパッケージを検索して含めます。
    4. Next をクリックします。
  5. オプション: Users ページで、ユーザーを追加します。

    1. Add user をクリックします。
    2. UsernamePassword、および SSH key を入力します。また、Administrator チェックボックスをクリックして、そのユーザーを特権ユーザーとして指定することもできます。
    3. Next をクリックします。
  6. オプション: Timezone ページで、タイムゾーンを設定します。

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

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

    2. NTP サーバーを入力します。
    3. Next をクリックします。
  7. オプション: Locale ページで、次の手順を実行します。

    1. Languages 検索フィールドに、システムイメージに追加するロケール識別子を入力します。たとえば、"us" と入力します。
    2. Keyboard 検索フィールドに、システムイメージに追加するロケール識別子を入力します。たとえば、["en_US.UTF-8"] と入力します。
    3. Next をクリックします。
  8. オプション: Hostname ページでホスト名を追加し、Next をクリックします。
  9. オプション: Kernel ページで、次の手順を実行します。

    1. カーネル名を入力します。
    2. カーネルのコマンドライン引数を追加します。
    3. Next をクリックします。
  10. オプション: Firewall ページで、次の手順を実行します。

    1. port 番号を入力します。
    2. 有効または無効にするファイアウォールサービスを追加します。
    3. Next をクリックします。
  11. オプション: Systemd services ページで、有効または無効にするサービスを追加します。

    1. 有効または無効にするサービス名を、コンマまたはスペースで区切って入力するか、Enter を押して入力します。
    2. Next をクリックします。
  12. Details ページで、次の手順を実行します。

    1. ブループリントの名前と、必要に応じてその説明を入力します。
    2. Next をクリックします。
  13. Review ページでブループリントの詳細を確認し、ドロップダウンメニューから次のいずれかのオプションを選択します。

    • Create blueprint をクリックします。
    • Create blueprint and build image(s) をクリックします。

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

6.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 をクリックして、利用可能なすべてのカスタマイズオプションに移動できます。

6.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 ボタンをクリックします。

検証

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

次の手順を実行すると、カスタマイズしたブループリントからカスタマイズした 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 を選択します。

第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 インストーラーイメージを作成できます。生成されるイメージは、オペレーティングシステムにインストールできる .tar ファイルを含む .iso ファイルです。

.iso ファイルは、Anaconda を起動し、システムをセットアップするための .tar ファイルをインストールするように設定されています。作成した ISO イメージファイルは、ハードディスク上で使用したり、仮想マシン内で起動するために使用したりできます。たとえば、HTTP ブートや USB インストールなどで使用できます。

警告

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

前提条件

手順

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

    # image-builder build iso --blueprint <blueprint_name>
    Copy to Clipboard Toggle word wrap
    • <blueprint_name> は作成したブループリントの名前です。
    • <image_installer> はイメージタイプです。

      Compose プロセスが開始します。完了するまでに数分かかる場合があります。

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

次のステップ

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

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

    $ mount -o ro <path_to_iso> /mnt
    Copy to Clipboard Toggle word wrap

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

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

    $ tar ztvf /mnt/liveimg.tar.gz
    Copy to Clipboard Toggle word wrap

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

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

警告

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

前提条件

手順

  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 Installer (.iso)" イメージをシステムに保存します。
  2. "RHEL Installer (.iso)" イメージをダウンロードしたフォルダーに移動します。
  3. ダウンロードした .tar イメージを見つけます。
  4. "RHEL Installer (.iso)" イメージの内容を展開します。

    $ tar -xf <content>.tar
    Copy to Clipboard Toggle word wrap

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

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

前提条件

  • RHEL Image Builder を使用して起動可能な ISO イメージを作成した。
  • 起動可能な ISO イメージをダウンロードした。
  • dd ツールをインストールした。
  • ISO イメージに十分な容量の USB フラッシュドライブがある。必要なサイズはブループリントで選択したパッケージによって異なりますが、最小サイズは 8 GB です。

手順

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

    dd if=installer.iso of=/dev/sdX
    Copy to Clipboard Toggle word wrap

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

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

OpenSCAP によるブループリントのカスタマイズのサポートにより、特定のセキュリティープロファイルの scap-security-guide コンテンツからブループリントを生成し、そのブループリントを使用して独自のハードニング済みイメージをビルドできます。

OpenSCAP を使用してカスタマイズしたブループリントを作成するには、次の主な手順を実行します。

  • 特定の要件に応じてマウントポイントを変更し、ファイルシステムレイアウトを設定します。
  • ブループリントで、OpenSCAP プロファイルを選択します。これにより、選択したプロファイルに従って、イメージのビルド中に修復をトリガーするようにイメージが設定されます。また、イメージのビルド中に、OpenSCAP が pre-first-boot (初回起動前) の修復を適用します。

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

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

次の例は、OpenSCAP 修復ステージのスニペットです。

[customizations.openscap]
# If you want to use the data stream from the 'scap-security-guide' package
# the 'datastream' key could be omitted.
# datastream = "/usr/share/xml/scap/ssg/content/ssg-rhel10-ds.xml"
profile_id = "xccdf_org.ssgproject.content_profile_cis"
Copy to Clipboard Toggle word wrap

次のコマンドを使用すると、scap-security-guide パッケージの SCAP ソースデータストリームの詳細 (データストリームによって提供されるセキュリティープロファイルのリストを含む) を確認できます。

# oscap info /usr/share/xml/scap/ssg/content/ssg-rhel10-ds.xml
Copy to Clipboard Toggle word wrap

ユーザーの便宜のために、OpenSCAP ツールでは、scap-security-guide データストリームで利用可能な任意のプロファイルのハードニングブループリントを生成できます。

たとえば、次のコマンドを実行します。

# oscap xccdf generate fix --profile=cis --fix-type=blueprint /usr/share/xml/scap/ssg/content/ssg-rhel10-ds.xml
Copy to Clipboard Toggle word wrap

次の例のような CIS プロファイルのブループリントを生成します。

# Blueprint for CIS Red Hat Enterprise Linux 10.0 Benchmark for Level 2 - Server

# Profile Description:
# This profile defines a baseline that aligns to the "Level 2 - Server"
# configuration from the Center for Internet Security® Red Hat Enterprise
# Linux 10 Benchmark™, v3.0.0, released 2023-10-30.
# This profile includes Center for Internet Security®
# Red Hat Enterprise Linux 10.0 CIS Benchmarks™ content.
#
# Profile ID:  xccdf_org.ssgproject.content_profile_cis
# Benchmark ID:  xccdf_org.ssgproject.content_benchmark_RHEL-10.0
# Benchmark Version:  0.1.74
# XCCDF Version:  1.2

name = "hardened_xccdf_org.ssgproject.content_profile_cis"
description = "CIS Red Hat Enterprise Linux 10.0 Benchmark for Level 2 - Server"
version = "0.1.74"

[customizations.openscap]
profile_id = "xccdf_org.ssgproject.content_profile_cis"
# If your hardening data stream is not part of the 'scap-security-guide' package
# provide the absolute path to it (from the root of the image filesystem).
# datastream = "/usr/share/xml/scap/ssg/content/ssg-xxxxx-ds.xml"

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

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

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

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

[[packages]]
name = "aide"
version = "*"

[[packages]]
name = "libselinux"
version = "*"

[[packages]]
name = "audit"
version = "*"

[customizations.kernel]
append = "audit_backlog_limit=8192 audit=1"

[customizations.services]
enabled = ["auditd","crond","firewalld","systemd-journald","rsyslog"]
disabled = []
masked = ["nfs-server","rpcbind","autofs","bluetooth","nftables"]
Copy to Clipboard Toggle word wrap
注記

このブループリントスニペットは、イメージのハードニングにそのまま使用しないでください。完全なプロファイルを反映するものではありません。Red Hat は scap-security-guide パッケージ内の各プロファイルのセキュリティー要件を継続的に更新および改良しています。そのため、システムに提供されるデータストリームの最新バージョンを使用して初期テンプレートを常に再生成することを推奨します。

これで、ブループリントをカスタマイズすることも、そのまま使用してイメージをビルドすることもできます。

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

  • openscap-scannerOpenSCAP ツールです。
  • scap-security-guide は、修復および評価の手順が含まれているパッケージです。

    注記

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

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

オンプレミスの RHEL Image Builder は OpenSCAP 統合をサポートしています。この統合により、ハードニング済みの RHEL イメージの作成が可能になります。

ブループリントを設定すると、次のアクションを実行できます。

  • 特定のプロファイルに準拠したハードニング済みイメージを作成する
  • 仮想マシンやベアメタル環境などにハードニング済みイメージをデプロイする

前提条件

  • root ユーザーまたは weldr グループのメンバーであるユーザーとしてログインしている。
  • openscap および scap-security-guide パッケージがインストールされている。

手順

  1. OpenSCAP ツールと scap-security-guide コンテンツを使用して、TOML 形式でハードニングブループリントを作成し、必要に応じて変更します。

    # oscap xccdf generate fix --profile=<profileID> --fix-type=<blueprint> /usr/share/xml/scap/ssg/content/ssg-rhel10-ds.xml > cis.toml
    Copy to Clipboard Toggle word wrap

    <profileID> は、システムが準拠する必要があるプロファイル ID (例: cis) に置き換えます。

  2. ハードニング済みイメージのビルドを開始します。

    # image-builder build <image_type> --blueprint <blueprint_name>
    Copy to Clipboard Toggle word wrap

    <image_type> は、任意のイメージタイプ (例: qcow2) に置き換えます。

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

検証

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

重要

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

8.3. RHEL Image Builder を使用したハードニング済みイメージのカスタマイズ

社内ポリシーを実装するために、特定のルールのパラメーター (パスワードの最小長など) を変更したり、別の方法で対応するルールを削除したり、追加のルールを選択したりすることで、セキュリティープロファイルをカスタマイズできます。プロファイルをカスタマイズして新しいルールを定義することはできません。

そのブループリントからイメージをビルドすると、新しいテーラリングプロファイル ID を持つテーラリングファイルが作成され、/usr/share/xml/oscap-tailoring/tailoring.xml としてイメージに保存されます。新しいプロファイル ID には、ベースプロファイルの接尾辞として tailoring が追加されます。たとえば、CIS (cis) ベースプロファイルを使用する場合、プロファイル ID は xccdf_org.ssgproject.content_profile_cis_tailoring になります。

前提条件

  • root ユーザーまたは weldr グループのメンバーであるユーザーとしてログインしている。
  • openscap および scap-security-guide パッケージがインストールされている。

手順

  1. 選択したプロファイルから TOML 形式でハードニングブループリントを作成します。以下に例を示します。

    # oscap xccdf generate fix --profile=<profileID> --fix-type=blueprint /usr/share/xml/scap/ssg/content/ssg-rhel10-ds.xml > <profileID>tailored.toml
    Copy to Clipboard Toggle word wrap
  2. カスタマイズしたルールセットを含むテーラリングセクションをブループリントに追加します。テーラリングカスタマイズでは、ルールを選択または選択解除します。これが反映されるのは、カスタマイズのベースとなるプロファイルに含まれるルールのデフォルトの選択状態または選択解除状態だけです。他のルールの状態は変更されないことに注意してください。

    # Blueprint for CIS Red Hat Enterprise Linux 10.0 Benchmark for Level 2 - Server
    # ...
    [customizations.openscap.tailoring]
    selected = [ "xccdf_org.ssgproject.content_bind_crypto_policy" ]
    unselected = [ "grub2_password" ]
    Copy to Clipboard Toggle word wrap
  3. ハードにング済みイメージのビルドを開始します。

    # *image-builder build <image_type> --blueprint <blueprintProfileID> *
    Copy to Clipboard Toggle word wrap

    <image_type> は、任意のイメージタイプ (例: qcow2) に置き換えます。

    イメージのビルドが準備できたら、デプロイメントでハードニング済みイメージを使用します。

検証

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

重要

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

第9章 RHEL Image Builder を使用した FIPS モードの有効化

カスタマイズしたイメージを作成し、FIPS 対応の RHEL イメージを起動できます。イメージを作成する前に、ブループリント内の fips ディレクティブの値を変更する必要があります。

前提条件

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

手順

  1. 次の内容を含む、Tom’s Obvious, Minimal Language (TOML) 形式のプレーンテキストファイルを作成します。

    name = "system-fips-mode-enabled"
    description = "blueprint with FIPS enabled"
    version = "0.0.1"
    fips = true
    
    [[customizations.user]]
    name = "admin"
    password = "admin"
    groups = ["users", "wheel"]
    Copy to Clipboard Toggle word wrap
  2. カスタマイズした RHEL イメージをビルドします。

    # image-builder build image-type --blueprint blueprint-name
    Copy to Clipboard Toggle word wrap

検証

  1. ブループリントで設定したユーザー名とパスワードを使用してシステムイメージにログインします。
  2. FIPS モードが有効になっているかどうかを確認します。

    $ cat /proc/sys/crypto/fips_enabled
    1
    Copy to Clipboard Toggle word wrap

第10章 RHEL Image Builder を使用した WSL 2 イメージの生成

RHEL Image Builder を使用して、Windows Subsystem for Linux (WSL) を作成できます。.wsl 形式でイメージをビルドした後、イメージをダブルクリックしてローカルにデプロイできます。

Windows Subsystem for Linux (WSL) は、Windows 環境と並行して Linux ディストリビューションを実行します。WSL イメージは、次のイメージのカスタマイズをサポートしています。

  • cloud-init
  • distro
  • packages
  • modules
  • groups
  • minimal

WSL イメージはロケールとファイルシステムのカスタマイズをサポートしていないことに注意してください。WSL インスタンスには設計上固有のディスクイメージがないため、ファイルシステムとストレージオプションを設定することはできません。

前提条件

手順

  1. カスタマイズした RHEL イメージをビルドします。

    # image-builder build wsl --blueprint <blueprint-name>
    Copy to Clipboard Toggle word wrap
  2. イメージをダウンロードします。

    # image-builder image <UUID>
    Copy to Clipboard Toggle word wrap

    RHEL Image Builder により、イメージがカレントディレクトリーパスにダウンロードされます。UUID とイメージサイズが表示されます。

    $ UUID-image-name. type: size MB
    Copy to Clipboard Toggle word wrap

    イメージのファイル名は、デフォルトで、af9e8627867e-image.wsl など、一意の識別子を含んだものになります。一意の識別番号は wsl.exe ユーティリティーに提供されます。

  3. wsl イメージを Microsoft Windows システムにインポートし、イメージのインストールを開始します。

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

RHEL Image Builder を使用して、Kernel-based Virtual Machine (KVM) ベースのハイパーバイザーにデプロイできる .qcow2 イメージを作成します。

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

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

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

RHEL Image Builder の GUI を使用して、カスタマイズした .qcow2 KVM ゲストイメージを作成できます。

前提条件

  • システムにアクセスするには、root または weldr グループに属している必要があります。
  • cockpit-image-builder パッケージがインストールされている。
  • 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 ファイルがデフォルトのダウンロード先にダウンロードされます。

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

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

前提条件

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

手順

  1. RHEL Image Builder を使用して作成した .qcow2 イメージを /var/lib/libvirt/images/ ディレクトリーに移動します。
  2. たとえば、cloudinitiso というディレクトリーを作成し、新しく作成したこのディレクトリーに移動します。

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

    instance-id: citest
    local-hostname: vmname
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap

    ssh_authorized_keys は SSH 公開鍵です。SSH 公開鍵は ~/.ssh/id_rsa.pub\ にあります。

  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)
    Copy to Clipboard Toggle word wrap
  6. virt-install コマンドを使用して、KVM ゲストイメージから新しい仮想マシンを作成します。ステップ 4 で作成した ISO イメージを、仮想マシンイメージへのアタッチメントとして含めます。

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

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

検証

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

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

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

第12章 RHEL Image Builder を使用した Vagrant ボックスの作成

RHEL Image Builder を使用すると、vagrant-libvirt または vagrant-virtualbox イメージタイプを選択して Vagrant ボックスを作成できます。

RHEL Image Builder は、さまざまなハイパーバイザー向けに最適化された事前設定済みのイメージを生成します。

  • vagrant-libvirtlibvirt 用の QCOW2 ベースのイメージを作成します。
  • vagrant-virtualboxVirtualBox 用の VMDK ベースのイメージを作成します。

事前設定済みのイメージには、sudo 特権を持つ vagrant ユーザーが含まれています。この設定により、Vagrant ボックス内の管理タスクが簡素化されます。

これらのイメージは、aarch64 および x86_64 のアーキテクチャーでサポートされています。

12.1. libvirt および VirtualBox バックエンド用の Vagrant イメージのビルド

RHEL Image Builder を使用すると、vagrant-libvirt および vagrant-virtualbox イメージタイプを使用して、各プロバイダー用のカスタム Vagrant ボックスを作成できます。

  • vagrant-libvirt イメージタイプは、libvirt プロバイダーで使用するための QCOW2 ベースのボックスを作成します。
  • vagrant-virtualbox イメージタイプは、VirtualBox プロバイダーと互換性のあるボックスを作成します。

イメージタイプは、ブループリントのカスタマイズ機能を使用してカスタマイズできます。

前提条件

  • RHEL Image Builder がインストールおよび実行されている。
  • すぐにビルドできるブループリントファイルがある。
  • libvirt box の場合: libvirt ハイパーバイザーを備えたホストシステムがインストールおよび実行されている。
  • VirtualBox ボックスの場合: VirtualBox がインストールされたホストシステムがインストール済みである。

手順

  1. Vagrant ボックスイメージをビルドします。

    • libvirt の場合:

      $ sudo image-builder build --distro rhel-10.0 vagrant-libvirt
      Copy to Clipboard Toggle word wrap
    • VirtualBox の場合:

      $ sudo image-builder build - -distro <distro-name> vagrant-virtualbox
      Copy to Clipboard Toggle word wrap

      これにより、.box ファイルが作成されます。

  2. 新しい .box ファイルをローカルの Vagrant 環境にインポートします。provider を明示的に virtualbox に設定する必要があります。virtualbox は標準のプロバイダーではないためです。

    $ vagrant box add --provider=virtualbox <path/to/box> --name=<box-name>
    Copy to Clipboard Toggle word wrap

    path/to/image-name.box はファイルへの実際のパスに置き換え、<box_name>rhel10-vagrant などの名前に置き換えます。

  3. プロジェクト用の新しいディレクトリーを作成し、Vagrant を初期化します。

    $ mkdir <my_vagrant_project>
    $ cd <my_vagrant_project>
    $ vagrant init <box-name>
    Copy to Clipboard Toggle word wrap

    これにより、Vagrantfile 設定ファイルが作成され、そのデフォルトボックスが <box-name> に設定されます。

  4. Vagrant を使用して仮想マシンを起動します。

    $ vagrant up
    Copy to Clipboard Toggle word wrap

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

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

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

ブループリントにコンテナーのカスタマイズを追加して、registry.access.redhat.com からコンテナーを埋め込みます。RHEL Image Builder は、イメージのビルド中にコンテナーをプルし、コンテナーをイメージに保存します。

デフォルトのローカルコンテナーストレージの場所は、サポートされているすべての container-tools (Podman など) がその場所を正しく扱えるように、イメージの種類によって異なります。

前提条件

  • ブループリントを作成した。

手順

  • コンテナーを使用してブループリントをカスタマイズします。
[[containers]]
source = "registry.access.redhat.com/ubi10/ubi:latest"
name =  "_<local_name>_"
tls-verify = true
Copy to Clipboard Toggle word wrap
  • source - 必須フィールド。これは、レジストリーにあるコンテナーイメージへの参照です。この例では、registry.access.redhat.com レジストリーを使用します。タグのバージョンを指定できます。デフォルトのタグバージョンは latest です。
  • name - ローカルレジストリー内のコンテナーの名前。
  • tls-verify - ブール値フィールド。tls-verify ブール値フィールドは、Transport Layer Security を制御します。デフォルト値は true です。

    保護されたコンテナーリソースにアクセスするには、containers-auth.json ファイルを使用できます。

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

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

前提条件

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

手順

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

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

    name = "simple-container"
    description = "Simple RHEL container"
    version = "0.0.1"
    [[packages]]
    name = "nginx"
    version = "*"
    Copy to Clipboard Toggle word wrap
  3. レジストリーとリポジトリーを image-builder ツールに引数として渡し、コンテナーイメージをビルドします。

    # image-builder build --blueprint <simple-container> --extra-repo "quay.io:8080/<namespace>/<repository>" --extra-repo registry-config.toml
    Copy to Clipboard Toggle word wrap
    注記

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

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

検証

  1. quay.io を開き、Repository Tags をクリックします。作成したコンテナーに関する次のような詳細が表示されます。

    • 最終更新日
    • イメージサイズ
    • クリップボードにコピーできる manifest ID
  2. manifest ID の値をコピーして、コンテナーを埋め込むイメージをビルドします。

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

コンテナーイメージを作成したら、カスタマイズしたイメージをビルドし、その中にコンテナーイメージをプルします。ブループリント内の container customization 仕様と、最終的なイメージの container name を使用します。コンテナーイメージが取得され、ローカルの Podman コンテナーストレージに追加されます。

前提条件

手順

  1. qcow2 イメージをビルドするためのブループリントを作成します。このブループリントには、[[containers]] のカスタマイズを含める必要があります。

    name = "image"
    description = "A qcow2 image with a container"
    version = "0.0.1"
    distro = "rhel-10"
    [[packages]]
    name = "podman"
    version = "*"
    [[containers]]
    source = "registry.access.redhat.com/ubi10:8080/image/container/container-image@sha256:manifest-ID-from-Repository-tag: tag-version"
    name =  "source"
    tls-verify = true
    Copy to Clipboard Toggle word wrap
  2. コンテナーイメージをビルドします。

    # image-builder build qcow2 --blueprint <blueprint>
    Copy to Clipboard Toggle word wrap
    注記

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

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

検証

  1. 生成された qcow2 イメージを見つけます。
  2. 仮想マシンで qcow2 イメージを起動します。KVM ゲストイメージからの仮想マシンの作成 を参照してください。
  3. qemu ウィザードが開きます。ユーザー名とパスワードを入力して qcow2 イメージにログインします。customizations.user セクションの .qcow2 ブループリントで設定したユーザー名とパスワードか、cloud-init を使用して起動時に作成したユーザー名とパスワードを使用できます。
  4. コンテナーイメージを実行し、コンテナー内でシェルプロンプトを開きます。

    # podman run -it registry.access.redhat.com/ubi10:8080/<organization>/<repository>/bin/bash/
    Copy to Clipboard Toggle word wrap

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

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

    # type -a nginx
    Copy to Clipboard Toggle word wrap

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

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

RHEL Image Builder は、さまざまなクラウドプラットフォームですぐに使用できるカスタムシステムイメージを作成できます。カスタマイズした RHEL システムイメージをクラウド環境で使用するには、RHEL Image Builder を使用してイメージを作成し、出力タイプを選択し、システムを設定し、イメージをクラウドアカウントにアップロードします。

RHEL Web コンソールの Image Builder アプリケーションを使用すると、カスタマイズしたイメージをクラウドにプッシュできます。このアプリケーションは、AWSMicrosoft Azure クラウドなど、RHEL Image Builder がサポートしているサービスプロバイダーの一部で使用できます。

第15章 AMI イメージの準備と AWS へのアップロード

RHEL Image Builder を使用すると、AWS クラウド上でカスタムイメージを作成し、手動または自動で更新できます。

15.1. AWS AMI イメージを手動でアップロードする準備

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

前提条件

手順

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

    # dnf install python3 python3-pip
    Copy to Clipboard Toggle word wrap
  2. pip を使用して AWS コマンドラインツール をインストールします。

    # pip3 install awscli
    Copy to Clipboard Toggle word wrap
  3. プロファイルを設定します。ターミナルで、認証情報、リージョン、および出力形式を指定するように求められます。

    $ aws configure
    AWS Access Key ID [None]:
    AWS Secret Access Key [None]:
    Default region name [None]:
    Default output format [None]:
    Copy to Clipboard Toggle word wrap
  4. バケットの名前を定義し、バケットを作成します。

    $ BUCKET=bucketname
    $ aws s3 mb s3://$BUCKET
    Copy to Clipboard Toggle word wrap

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

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

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

      {
          "Version": "2022-10-17",
          "Statement": [{
              "Effect": "Allow",
              "Principal": {
                  "Service": "vmie.amazonaws.com"
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                      "sts:Externalid": "vmimport"
                  }
              }
          }]
      }
      Copy to Clipboard Toggle word wrap
    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
      Copy to Clipboard Toggle word wrap
    3. trust-policy.json ファイルを使用して、Amazon Web Services アカウントのロールを作成します。

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

      $ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json
      Copy to Clipboard Toggle word wrap

15.2. CLI を使用して AMI イメージを AWS に手動でアップロードする

RHEL Image Builder を使用して ami イメージをビルドし、CLI を使用して Amazon AWS Cloud サービスプロバイダーに直接手動でアップロードすることができます。

前提条件

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

手順

  1. イメージをビルドします。

    # image-builder build ami \
    --blueprint blueprint-name \
    --aws-region us-east-1 \
    --aws-bucket <example-bucket> \
    --aws-ami-name <image-name> \
    Copy to Clipboard Toggle word wrap
  2. イメージを AWS にアップロードします。

    # image-builder upload <image-name> \
    Copy to Clipboard Toggle word wrap

検証

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

15.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 クラウドへのアップロードについても通知されます。

    プロセスが完了すると、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. ターミナルを開くために、使用する接続方法として A standalone SSH client を選択します。
    2. 秘密鍵の保存先で、SSH が機能するように鍵が公開されていることを確認します。これには、以下のコマンドを実行します。

      $ chmod 400 <your_instance_name>.pem
      Copy to Clipboard Toggle word wrap
    3. パブリック DNS を使用してインスタンスに接続します。

      $ ssh -i <your-instance_name>.pem ec2-user@<your-instance-IP-address>
      Copy to Clipboard Toggle word wrap
    4. yes と入力して、接続の続行を確定します。

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

検証

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

第16章 VHD イメージの準備と Microsoft Azure へのアップロード

RHEL Image Builder を使用すると、カスタムイメージを作成し、そのイメージを手動または自動で Microsoft Azure クラウドにアップロードできます。

16.1. Microsoft Azure VHD イメージを手動でアップロードする準備

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

前提条件

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

手順

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

    $ sudo rpm --import https://packages.microsoft.com/keys/microsoft-2025.asc
    Copy to Clipboard Toggle word wrap
  2. packages-microsoft-com-prod リポジトリーを作成します。

    [azure-cli]
    name=Azure CLI
    baseurl=https://packages.microsoft.com/yumrepos/packages.microsoft.com/rhel/10/prod/
    enabled=1
    gpgcheck=1
    gpgkey=https://packages.microsoft.com/keys/microsoft.asc
    Copy to Clipboard Toggle word wrap
  3. Microsoft Azure CLI をインストールします。ダウンロードした Microsoft Azure CLI パッケージのバージョンは、現在利用可能なバージョンによって異なる場合があります。

    $ sudo dnf install azure-cli
    Copy to Clipboard Toggle word wrap
  4. Microsoft Azure CLI を実行します。

    $ az login
    Copy to Clipboard Toggle word wrap

    ターミナルに次のメッセージが表示されます。Note, we have launched a browser for you to login. For old experience with device code, use az login --use-device-code。その後、ターミナルで Login 画面が開き、そこからログインできるようになります。

    注記

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

  5. Microsoft Azure のストレージアカウントのキーをリスト表示し、コマンドの出力から key1 の値をメモします。

    $ az storage account keys list --resource-group <resource_group_name> --account-name <account_name>
    Copy to Clipboard Toggle word wrap

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

    1. 利用可能なリソースをリスト表示するには、次のコマンドを使用します。

      $ az resource list
      Copy to Clipboard Toggle word wrap
  6. ストレージコンテナーを作成します。

    $ az storage container create --account-name <storage_account_name> \
    --account-key <key1_value> --name <storage_account_name>
    Copy to Clipboard Toggle word wrap

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

16.2. VHD イメージを Microsoft Azure クラウドに手動でアップロードする

カスタマイズした VHD イメージを作成したら、それを手動で Microsoft Azure クラウドにアップロードできます。CLI を使用して .vhd イメージを作成すると、RHEL Image Builder は /var サブディレクトリーに一時ファイルを書き込みます。

.vhd イメージの作成失敗を防ぐために、/var サブディレクトリーの容量を増やし、少なくとも 15 - 20 GB の空き領域を確保してください。

前提条件

  • Microsoft Azure VHD イメージをアップロードできるようにシステムを設定した。
  • RHEL Image Builder で作成した Microsoft Azure VHD イメージがある。

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

手順

  1. イメージをビルドします。

    $ image-builder build <image-type>
    Copy to Clipboard Toggle word wrap
  2. イメージを Microsoft Azure にプッシュし、そこからインスタンスを作成します。

    $ az storage blob upload --account-name account_name --container-name container_name --file image_disk.vhd --name image-disk.vhd --type page
    Copy to Clipboard Toggle word wrap
  3. Microsoft Azure Blob ストレージへのアップロードが完了したら、そこから Microsoft Azure イメージを作成します。RHEL Image Builder で作成したイメージは、V1 = BIOSV2 = UEFI の両方のインスタンスタイプをサポートするハイブリッドイメージとして生成されます。そのため、--hyper-v-generation 引数を指定できます。デフォルトのインスタンスタイプは V1 です。

    $ az image create --resource-group resource_group_name --name image-disk.vhd --os-type linux --location location \
    --source https://$account_name.blob.core.windows.net/container_name/image-disk.vhd
    - Running
    Copy to Clipboard Toggle word wrap

検証

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

    $ az vm create --resource-group resource_group_name --location location --name vm_name --image image-disk.vhd(--admin-username azure-user --generate-ssh-keys*
    - Running
    Copy to Clipboard Toggle word wrap
  2. SSH を使用して秘密鍵を使用し、作成したインスタンスにアクセスします。azure-user としてログインします。このユーザー名は前の手順で設定したものです。

16.3. VHD イメージを作成して Microsoft Azure クラウドに自動的にアップロードする

RHEL Image Builder を使用すると、Microsoft Azure クラウドサービスプロバイダーの Azure Blob Storage に自動的にアップロードされる .vhd イメージを作成できます。

前提条件

手順

  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 接続を作成し、仮想マシンに接続します。

第17章 VMDK カスタムイメージの準備と vSphere へのアップロード

RHEL Image Builder を使用すると、カスタムイメージを作成し、そのイメージを手動または自動で VMware vSphere クラウドにアップロードできます。

RHEL Image Builder を使用すると、Open Virtualization Format (OVA) 形式のカスタマイズしたシステムイメージを作成し、そのイメージを VMware vSphere クライアントに自動的にアップロードできます。

OVA (.ova) は、仮想ハードウェアに関する追加のメタデータを含む .vmdk イメージです。このイメージには、vSphere へのイメージのインポートを容易にする最小限のテンプレートが含まれています。vSphere .ova イメージには、.ovf (Open Virtualization Format) パッケージが含まれています。RHEL Image Builder が vSphere クライアントで .ova イメージのインポートを完了したら、そのイメージをネットワーク、ディスク、CD-ROM などの追加ハードウェアを使用して設定できます。

Open virtualization format (.ova) イメージは、vSphere GUI または govc クライアントを使用してインポートできます。govc クライアントを使用してイメージをアップロードするには、VMDK イメージのアップロードと vSphere での 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 リストから、必要なイメージの出力タイプを選択します。
    3. オプション: イメージを VMware に直接アップロードするには、Upload to VMware チェックボックスをオンにします。
    4. イメージのサイズを入力します。
    5. Next をクリックします。
  5. Upload to VMware ページで、次の情報を入力します。

    1. Image name: イメージ名を入力します。
    2. Host: イメージファイルをアップロードする VMware vSphere インスタンスの URL を入力します。
    3. Cluster: イメージをアップロードするクラスター名のページを入力します。
    4. Datacenter: イメージをアップロードするデータセンター名。
    5. Datastore: イメージをアップロードするデータストア名。
    6. Folder: イメージをアップロードするフォルダー名。
    7. Next をクリックします。
  6. Review ページで、イメージの作成に関する詳細を確認し、Create をクリックします。

    イメージの作成が開始し、イメージ作成の進捗と、それに続く VMware vSphere クライアントへのアップロードの進捗が表示されます。

17.2. 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 を使用して、.ova または .vmdk 形式の VMware vSphere イメージを作成し、ホストシステムにダウンロードした。
  • govc CLI ツールをインストールして設定し、import.vmdk コマンドが使用可能である。

手順

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

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

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

      $ govc import.vmdk ./api.vmdk <folder-name>
      Copy to Clipboard Toggle word wrap
      • .ova 形式の場合:

        $ govc import.ova ./api.ova <folder-name>
        Copy to Clipboard Toggle word wrap
    2. 電源をオンにせずに vSphere に仮想マシンを作成します。

      govc vm.create \
      -net.adapter=vmxnet3 \
      -m=4096 -c=2 -g=rhel8_64Guest \
      -firmware=efi -disk="<folder-name>/api.vmdk” \
      -disk.controller=scsi -on=false \
       vmname
      Copy to Clipboard Toggle word wrap

      .ova 形式の場合は、-firmware=efi -disk="folder_name/api.vmdk” の行を -firmware=efi -disk=”<folder-name>/api.ova” に置き換えます。

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

      $ govc vm.power -on <vm-name>
      Copy to Clipboard Toggle word wrap
    4. 仮想マシンの IP アドレスを取得します。

      $ govc vm.ip <vm-name>
      Copy to Clipboard Toggle word wrap
    5. ブループリントで指定したユーザー名とパスワードで、SSH を使用して、仮想マシンにログインします。

      $ ssh admin@ <vm-ip-address>
      Copy to Clipboard Toggle word wrap
      注記

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

17.3. Image Builder GUI を使用して VMDK イメージを作成し、vSphere に自動的にアップロードする

RHEL Image Builder GUI ツールを使用して VMware イメージをビルドし、そのイメージを vSphere インスタンスに直接自動的にプッシュできます。これにより、イメージファイルをダウンロードして手動でプッシュする必要がなくなります。

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

前提条件

  • root または weldr グループのメンバーである。
  • ブラウザーで RHEL Image Builder を開いた。
  • ブループリントを作成した。
  • vSphere アカウントがある。

手順

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

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

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

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

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

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

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

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

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

検証

  1. アップロードしたイメージから仮想マシン (VM) を作成し、仮想マシンにログインします。
  2. VMware vSphere クライアントにアクセスします。
  3. 指定した vSphere インスタンスのクラスターでイメージを検索します。
  4. アップロードしたイメージを選択します。
  5. 選択したイメージを右クリックします。
  6. New Virtual Machine をクリックします。

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

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

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

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

      $ rpm -qa | grep firefox
      Copy to Clipboard Toggle word wrap

第18章 カスタム GCE イメージの準備と Google Cloud へのアップロード

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

18.1. CLI を使用して gce イメージを設定して Google Cloud にアップロードする

RHEL Image Builder CLI を使用して、gce イメージを GCP にアップロードするための認証情報を含む設定ファイルを設定します。

警告

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

前提条件

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

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

手順

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

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

      注記

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

  2. Google Cloud からダウンロードした JSON ファイルから <gcp_credentials> を取得します。

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

    $ sudo image-builder build gce --blueprint <blueprint_name> <image_key> gcp-config.toml
    Copy to Clipboard Toggle word wrap

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

検証

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

    $ sudo image-builder compose status
    Copy to Clipboard Toggle word wrap

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

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

優先順位は次のとおりです。

  1. 設定ファイル内で image-builder コマンドとともに指定された認証情報。
  2. Google Cloud SDK ライブラリーの Application Default Credentials。これは、次の選択肢を使用して認証方法の自動検出を試みます。

    1. GOOGLE_APPLICATION_CREDENTIALS 環境変数が設定されている場合、Application Default Credentials は、変数によって指定されたファイルから認証情報をロードして使用することを試みます。
    2. Application Default Credentials は、コードを実行しているリソースに関連付けられたサービスアカウントを使用して認証を試みます。たとえば、Google Compute Engine 仮想マシンです。

      注記

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

第19章 カスタムイメージの準備と OCI への直接アップロード

RHEL Image Builder を使用して、カスタムイメージを作成し、そのイメージを Oracle Cloud Infrastructure (OCI) インスタンスに自動的にアップロードできます。

19.1. カスタムイメージを作成して 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 をクリックします。

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

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

検証

  1. OCI dashboard にアクセスし、Custom Images をクリックします。
  2. イメージに指定した Compartment を選択し、Import image テーブルでイメージを見つけます。
  3. イメージ名をクリックして、イメージ情報を確認します。

第20章 カスタマイズした QCOW2 イメージを準備して OpenStack に直接アップロードする

RHEL Image Builder を使用してカスタムの .qcow2 イメージを作成し、OpenStack クラウドデプロイメントに手動でアップロードできます。

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

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

前提条件

  • ブループリントを作成した。

手順

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

    # image-builder build qcow2 --blueprint blueprint_name
    Copy to Clipboard Toggle word wrap
  2. OpenStack ダッシュボードにアクセスし、+Create Image をクリックします。
  3. 左側のメニューで、Admin タブを選択します。
  4. System Panel から Image をクリックします。

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

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

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

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

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

    3. Details ページで、インスタンスの名前を入力します。Next をクリックします。
    4. Source ページで、アップロードしたイメージの名前を選択します。Next をクリックします。
    5. Flavor ページで、ニーズに最適なマシンリソースを選択します。Launch をクリックします。
  7. CLI や OpenStack Web UI などの任意のメカニズムを使用して、イメージからイメージインスタンスを実行できます。SSH を使用して秘密鍵を使用し、作成したインスタンスにアクセスします。cloud-user としてログインします。

第21章 カスタマイズした RHEL イメージを準備して Alibaba Cloud にアップロードする

RHEL Image Builder で作成した、カスタマイズしれた .ami イメージを Alibaba Cloud にアップロードできます。

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

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

前提条件

  • OSS を有効化し、カスタムイメージをアップロードした。
  • イメージを ECS コンソールに正常にインポートした。

手順

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

    注記

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

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

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

RHEL Image Builder を使用して作成した、カスタマイズした Alibaba RHEL イメージを Elastic Compute Service (ECS) にインポートできます。

前提条件

  • Alibaba イメージをアップロードできるようにシステムを設定した。
  • RHEL Image Builder を使用して ami イメージを作成した。
  • バケットがある。Creating a bucket を参照してください。
  • アクティブな Alibaba アカウント がある。
  • OSS を有効化した。
  • イメージを Object Storage Service (OSS) にアップロードした。

手順

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

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

      1. OSS Object Address - OSS Object Address を参照
      2. Image Name
      3. Operating System
      4. System Disk Size
      5. System Architecture
      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 コンソールにインポートされます。

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

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

前提条件

  • Alibaba イメージをアップロードできるようにシステムを設定した。
  • RHEL Image Builder を使用して ami イメージを作成した。
  • バケットがある。Creating a bucket を参照してください。
  • アクティブな Alibaba アカウント がある。
  • OSS を有効化した。

手順

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

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

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

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

注記

RHEL Image Builder は、Alibaba の要件に準拠したイメージを生成します。ただし、イメージの形式の準拠を検証するには、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
    Copy to Clipboard Toggle word wrap
  3. イメージのコンプライアンスツールのファイルパーミッションを変更します。

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

    # ./image_check
    Copy to Clipboard Toggle word wrap

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

トラブルシューティング

  • いずれかの Detection Items が不合格となった場合は、ターミナルの指示に従ってその項目を修正してください。

法律上の通知

Copyright © 2025 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.
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る