1.3. RHEL Image Builder CLI を使用したシステムイメージの作成
RHEL Image Builder は、カスタムのシステムイメージを作成するツールです。RHEL Image Builder を制御し、カスタムシステムイメージを作成するには、コマンドラインインターフェイス (CLI) または Web コンソールインターフェイスを使用できます。
1.3.1. RHEL Image Builder コマンドラインインターフェイスの紹介
RHEL Image Builder コマンドラインインターフェイス (CLI) を使用してブループリントを作成するには、適切なオプションとサブコマンドを指定して composer-cli
コマンドを実行します。
コマンドラインインターフェイスのワークフローの概要は次のようになります。
- ブループリントを作成するか、既存のブループリント定義をプレーンテキストファイルにエクスポート (保存) します。
- テキストエディターでこのファイルを編集します。
- ブループリントテキストファイルを Image Builder にインポートします。
- Compose を実行して、ブループリントからイメージをビルドします。
- イメージファイルをエクスポートしてダウンロードします。
composer-cli
コマンドには、ブループリントを作成する基本的なサブコマンドとは別に、設定したブループリントと Compose の状態を調べるための多くのサブコマンドが用意されています。
1.3.2. RHEL Image Builder を非 root ユーザーとして使用する
非 root として composer-cli
コマンドを実行するには、ユーザーが weldr
グループに属している必要があります。
前提条件
- ユーザーを作成している。
手順
ユーザーを
weldr
またはroot
グループに追加するには、次のコマンドを実行します:$ sudo usermod -a -G weldr user $ newgrp weldr
1.3.3. コマンドラインインターフェイスを使用したブループリントの作成
コマンドラインインターフェイス (CLI) を使用して、新しい RHEL Image Builder ブループリントを作成できます。ブループリントには、最終的なイメージと、パッケージやカーネルのカスタマイズなどのそのカスタマイズが記述されています。
前提条件
- root ユーザーまたは welder グループのメンバーであるユーザーとしてログインしている。
手順
次の内容のプレーンテキストファイルを作成します。
name = "BLUEPRINT-NAME" description = "LONG FORM DESCRIPTION TEXT" version = "0.0.1" modules = [] groups = []
BLUEPRINT-NAME および LONG FORM DESCRIPTION TEXT は、ブループリントの名前および説明に置き換えます。
0.0.1 は、セマンティックバージョニングスキームに従ってバージョン番号に置き換えます。
ブループリントに含まれるすべてのパッケージに、次の行をファイルに追加します。
[[packages]] name = "package-name" version = "package-version"
package-name は、パッケージ名 (httpd、gdb-doc、coreutils など) に置き換えます。
必要に応じて、package-version を使用するバージョンに置き換えます。このフィールドは、
dnf
バージョンの指定に対応します。- 特定のバージョンについては、8.7.0 などの正確なバージョン番号を使用してください。
- 利用可能な最新バージョンについては、アスタリスク * を使用してください。
- 最新のマイナーバージョンを指定する場合は、8.* などの形式を使用してください。
ニーズに合わせてブループリントをカスタマイズします。たとえば、Simultaneous Multi Threading (SMT) を無効にするには、ブループリントファイルに次の行を追加します。
[customizations.kernel] append = "nosmt=force"
その他に利用できるカスタマイズについては、サポートされているイメージのカスタマイズ を参照してください。
- たとえば、ファイルを BLUEPRINT-NAME.toml として保存し、テキストエディターを閉じます。
ブループリントをプッシュします。
# composer-cli blueprints push BLUEPRINT-NAME.toml
BLUEPRINT-NAME は、前の手順で使用した値に置き換えます。
注記composer-cli
を非 root として使用してイメージを作成するには、ユーザーをweldr
またはroot
グループに追加します。# usermod -a -G weldr user $ newgrp weldr
検証
ブループリントがプッシュされ存在していることを確認するには、既存のブループリントを一覧表示します。
# composer-cli blueprints list
追加したばかりのブループリント設定を表示します。
# composer-cli blueprints show BLUEPRINT-NAME
ブループリントに記載されているコンポーネントおよびバージョンと、その依存関係が有効かどうかを確認します。
# composer-cli blueprints depsolve BLUEPRINT-NAME
RHEL Image Builder がカスタムリポジトリーのパッケージの依存関係を解決できない場合は、
osbuild-composer
キャッシュを削除します。3$ sudo rm -rf /var/cache/osbuild-composer/* $ sudo systemctl restart osbuild-composer
関連情報
-
osbuild-composer
is unable to depsolve a package from my custom repository (Red Hat ナレッジベース) - Composing a customized RHEL system image with proxy server (Red Hat ナレッジベース)
1.3.4. コマンドラインインターフェイスを使用したブループリントの編集
コマンドライン (CLI) インターフェイスで既存のブループリントを編集して、たとえば、新しいパッケージを追加したり、新しいグループを定義したり、カスタマイズしたイメージを作成したりできます。そのためには、以下の手順に従います。
前提条件
- ブループリントを作成している。
手順
既存のブループリントをリストします。
# composer-cli blueprints list
ブループリントをローカルテキストファイルに保存します。
# composer-cli blueprints save BLUEPRINT-NAME
- BLUEPRINT-NAME .toml ファイルをテキストエディターで編集し、変更を加えます。
編集を完了する前に、ファイルが有効なブループリントであることを確認します。
ブループリントに次の行が存在する場合は、それを削除します。
packages = []
- たとえば、バージョン番号を 0.0.1 から 0.1.0 に増やします。RHEL Image Builder のブループリントバージョンでは、セマンティックバージョニングスキームを使用する必要があります。また、バージョンを変更しない場合、パッチバージョンコンポーネントが自動的に増加することにも注意してください。
- ファイルを保存し、テキストエディターを閉じます。
ブループリントを RHEL Image Builder にプッシュして戻します。
# composer-cli blueprints push BLUEPRINT-NAME.toml
注記ブループリントを RHEL Image Builder にインポートして戻すには、
.toml
拡張子を含むファイル名を指定しますが、他のコマンドではブループリント名のみを使用します。
検証
RHEL Image Builder にアップロードした内容が編集内容と一致することを確認するには、ブループリントの内容をリストします。
# composer-cli blueprints show BLUEPRINT-NAME
ブループリントに記載されているコンポーネントおよびバージョンと、その依存関係が有効かどうかを確認します。
# composer-cli blueprints depsolve BLUEPRINT-NAME
関連情報
1.3.5. RHEL Image Builder コマンドラインインターフェイスでのシステムイメージの作成
RHEL Image Builder のコマンドラインインターフェイスを使用して、カスタマイズした RHEL イメージをビルドできます。そのためには、ブループリントとイメージタイプを指定する必要があります。必要に応じて、ディストリビューションを指定することもできます。ディストリビューションを指定しない場合は、ホストシステムと同じディストリビューションとバージョンが使用されます。アーキテクチャーもホストのアーキテクチャーと同じになります。
前提条件
- イメージにブループリントを用意している。コマンドラインインターフェイスを使用した RHEL Image Builder ブループリントの作成 を参照してください。
手順
オプション: 作成できるイメージ形式をリストします。
# composer-cli compose types
Compose を起動します。
# composer-cli compose start BLUEPRINT-NAME IMAGE-TYPE
BLUEPRINT-NAME をブループリントの名前に、IMAGE-TYPE をイメージのタイプに置き換えます。使用可能な値は、
composer-cli compose types
コマンドの出力を参照してください。作成プロセスはバックグラウンドで開始され、作成者の Universally Unique Identifier (UUID) が表示されます。
イメージの作成が完了するまでに最大 10 分かかる場合があります。
Compose のステータスを確認するには、以下のコマンドを実行します。
# composer-cli compose status
Compose が完了すると、ステータスが FINISHED になります。リスト内の Compose を識別するには、その UUID を使用します。
Compose プロセスが完了したら、作成されたイメージファイルをダウンロードします。
# composer-cli compose image UUID
UUID は、前の手順で示した UUID 値に置き換えます。
検証
イメージを作成したら、次のコマンドを使用してイメージ作成の進行状況を確認できます。
イメージのメタデータをダウンロードして、Compose 用のメタデータの
.tar
ファイルを取得します。$ sudo composer-cli compose metadata UUID
イメージのログをダウンロードします。
$ sudo composer-cli compose logs UUID
このコマンドは、イメージ作成のログを含む
.tar
ファイルを作成します。ログが空の場合は、ジャーナルを確認できます。ジャーナルを確認してください。
$ journalctl | grep osbuild
イメージのマニフェストを確認します。
$ sudo cat /var/lib/osbuild-composer/jobs/job_UUID.json
ジャーナルで job_UUID .json を見つけることができます。
関連情報
- Tracing RHEL image builder (Red Hat ナレッジベース)
1.3.6. RHEL Image Builder コマンドラインの基本的なコマンド
RHEL Image Builder コマンドラインインターフェイスでは、以下のサブコマンドを利用できます。
ブループリント操作
- 利用可能なブループリント一覧の表示
# composer-cli blueprints list
- TOML 形式でブループリントの内容の表示
# composer-cli blueprints show <BLUEPRINT-NAME>
- TOML 形式のブループリントの内容を
BLUEPRINT-NAME.toml
ファイルに保存 (エクスポート) # composer-cli blueprints save <BLUEPRINT-NAME>
- ブループリントの削除
# composer-cli blueprints delete <BLUEPRINT-NAME>
- TOML 形式のブループリントファイルを RHEL Image Builder へプッシュ (インポート)
# composer-cli blueprints push <BLUEPRINT-NAME>
ブループリントでイメージの設定
- 利用可能なイメージタイプをリスト表示します。
# composer-cli compose types
- Compose の起動
# composer-cli compose start <BLUEPRINT> <COMPOSE-TYPE>
- Compose のリスト表示
# composer-cli compose list
- Compose、およびそのステータスのリスト表示
# composer-cli compose status
- 実行中の Compose のキャンセル
# composer-cli compose cancel <COMPOSE-UUID>
- 完了した Compose の削除
# composer-cli compose delete <COMPOSE-UUID>
- Compose の詳細情報の表示
# composer-cli compose info <COMPOSE-UUID>
- Compose のイメージファイルのダウンロード
# composer-cli compose image <COMPOSE-UUID>
- サブコマンドとオプションをもっと見る
# composer-cli help
関連情報
- システムの composer-cli(1) の man ページ
1.3.7. RHEL Image Builder のブループリント形式
RHEL Image Builder のブループリントは、TOML 形式のプレーンテキストとしてユーザーに表示されます。
一般的なブループリントファイルの要素には、次のものが含まれます。
- ブループリントのメタデータ
name = "<BLUEPRINT-NAME>" description = "<LONG FORM DESCRIPTION TEXT>" version = "<VERSION>"
BLUEPRINT-NAME および LONG FORM DESCRIPTION TEXT フィールドは、ブループリントの名前と説明です。
VERSION は、セマンティックバージョニングスキームに従ったバージョン番号であり、ブループリントファイル全体で 1 つだけ存在するものです。
- イメージに追加するグループ
[[groups]] name = "group-name"
group エントリーは、イメージにインストールするパッケージのグループを説明します。グループは、次のパッケージカテゴリーを使用します。
- 必須
- デフォルト
任意
group-name は、anaconda-tools、widget、wheel または users などのグループの名前です。ブループリントは、必須パッケージとデフォルトパッケージをインストールします。オプションパッケージを選択するメカニズムはありません。
- イメージに追加するパッケージ
[[packages]] name = "<package-name>" version = "<package-version>"
package-name は、httpd、gdb-doc、または coreutils などのパッケージの名前です。
package-version は使用するバージョンです。このフィールドは、
dnf
バージョンの指定に対応します。- 特定のバージョンについては、8.7.0 などの正確なバージョン番号を使用してください。
- 利用可能な最新バージョンを指定する場合は、アスタリスク (*) を使用します。
最新のマイナーバージョンの場合は、8.* などの形式を使用します。
追加するすべてのパッケージにこのブロックを繰り返します。
RHEL Image Builder ツールのパッケージとモジュールの間に違いはありません。どちらも RPM パッケージの依存関係として扱われます。
1.3.8. サポートされているイメージのカスタマイズ
ブループリントに次のようなカスタマイズを追加することで、イメージをカスタマイズできます。
- RPM パッケージの追加
- サービスの有効化
- カーネルコマンドラインパラメーターのカスタマイズ
とりわけ、ブループリント内ではいくつかのイメージのカスタマイズを使用できます。カスタマイズを使用すると、デフォルトのパッケージでは使用できないパッケージやグループをイメージに追加できます。これらのオプションを使用するには、ブループリントでカスタマイズを設定し、それを RHEL Image Builder にインポート (プッシュ) します。
関連情報
- Blueprint import fails after adding filesystem customization "size" (Red Hat ナレッジベース)
1.3.8.1. ディストリビューションの選択
distro
フィールドを使用して、イメージを作成するときやブループリント内の依存関係を解決するときに使用するディストリビューションを選択できます。distro
が空白のままの場合、ホストのディストリビューションが使用されます。ディストリビューションを指定しない場合、ブループリントはホストディストリビューションを使用します。ホストオペレーティングシステムをアップグレードする場合、ディストリビューションが設定されていないブループリントでは、新しいオペレーティングシステムのバージョンを使用してイメージがビルドされます。RHEL Image Builder ホストとは異なるオペレーティングシステムイメージをビルドすることはできません。
指定の RHEL イメージを常にビルドするように、RHEL ディストリビューションを使用してブループリントをカスタマイズします。
name = "blueprint_name" description = "blueprint_version" version = "0.1" distro = "different_minor_version"
以下に例を示します。
name = "tmux" description = "tmux image with openssh" version = "1.2.16" distro = "rhel-8.5"
別のマイナーバージョンをビルドするには、"different_minor_version" を置き換えます。たとえば、RHEL 8.10 イメージをビルドする場合は、distro
= "rhel-810" を使用します。RHEL 8.10 イメージでは、RHEL 8.9 以前のリリースなどのマイナーバージョンをビルドできます。
1.3.8.2. パッケージグループの選択
パッケージグループを使用してブループリントをカスタマイズします。イメージにインストールするパッケージのグループを、groups
リストに記述します。パッケージグループはリポジトリーのメタデータで定義されます。各グループには、主にユーザーインターフェイスでの表示に使用されるわかりやすい名前と、キックスタートファイルでよく使用される ID があります。この場合、ID を使用してグループをリストする必要があります。グループでは、必須、デフォルト、任意の 3 つの方法でパッケージを分類できます。ブループリントには、必須パッケージとデフォルトパッケージのみがインストールされます。任意のパッケージを選択することはできません。
name
属性は、必須の文字列であり、リポジトリー内のパッケージグループ ID と正確に一致する必要があります。
現在、osbuild-composer
のパッケージとモジュールの間に違いはありません。どちらも RPM パッケージの依存関係として扱われます。
パッケージを使用してブループリントをカスタマイズします。
[[groups]] name = "group_name"
group_name
は、グループの名前に置き換えます。たとえば、anaconda-tools
です。[[groups]] name = "anaconda-tools"
1.3.8.3. コンテナーの埋め込み
ブループリントをカスタマイズして、最新の RHEL コンテナーを埋め込むことができます。ソースを含むオブジェクトと、必要に応じて tls-verify
属性をコンテナーリストに含めます。
イメージに埋め込むコンテナーイメージを、コンテナーリストのエントリーに記述します。
-
source
- 必須フィールド。これは、レジストリーにあるコンテナーイメージへの参照です。この例では、registry.access.redhat.com
レジストリーを使用します。タグのバージョンを指定できます。デフォルトのタグバージョンは latest です。 -
name
- ローカルレジストリー内のコンテナーの名前。 -
tls-verify
- ブールフィールド。tls-verify ブールフィールドは、Transport Layer Security を制御します。デフォルト値は true です。
埋め込まれたコンテナーは自動的に起動しません。これを起動するには、systemd
ユニットファイルまたは quadlets
を作成し、ファイルをカスタマイズします。
registry.access.redhat.com/ubi9/ubi:latest
のコンテナーとホストのコンテナーを埋め込むには、ブループリントに次のカスタマイズを追加します。[[containers]] source = "registry.access.redhat.com/ubi9/ubi:latest" name = "local-name" tls-verify = true [[containers]] source = "localhost/test:latest" local-storage = true
containers-auth.json
ファイルを使用して、保護されたコンテナーリソースにアクセスできます。コンテナーレジストリーの認証情報 を参照してください。
1.3.8.4. イメージのホスト名の設定
customizations.hostname
は、最終イメージのホスト名を設定するために使用できるオプションの文字列です。このカスタマイズはオプションであり、設定しない場合、ブループリントはデフォルトのホスト名を使用します。
ブループリントをカスタマイズしてホスト名を設定します。
[customizations] hostname = "baseimage"
1.3.8.5. 追加ユーザーの指定
ユーザーをイメージに追加し、必要に応じて SSH キーを設定します。このセクションのフィールドは、name
を除いてすべてオプションです。
手順
ブループリントをカスタマイズして、イメージにユーザーを追加します。
[[customizations.user]] name = "USER-NAME" description = "USER-DESCRIPTION" password = "PASSWORD-HASH" key = "PUBLIC-SSH-KEY" home = "/home/USER-NAME/" shell = "/usr/bin/bash" groups = ["users", "wheel"] uid = NUMBER gid = NUMBER
[[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
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())'
その他のプレースホルダーを、適切な値に置き換えます。
name
の値を入力し、不要な行は省略します。追加するすべてのユーザーにこのブロックを繰り返します。
1.3.8.6. 追加グループの指定
作成されるシステムイメージのグループを指定します。name
属性と gid
属性は両方とも必須です。
グループを使用してブループリントをカスタマイズします。
[[customizations.group]] name = "GROUP-NAME" gid = NUMBER
追加するすべてのグループにこのブロックを繰り返します。以下に例を示します。
[[customizations.group]] name = "widget" gid = 1130
1.3.8.7. 既存ユーザーの SSH キーの設定
customizations.sshkey
を使用して、最終イメージ内の既存ユーザーの SSH キーを設定できます。user
属性と key
属性は両方とも必須です。
既存ユーザーの SSH キーを設定してブループリントをカスタマイズします。
[[customizations.sshkey]] user = "root" key = "PUBLIC-SSH-KEY"
以下に例を示します。
[[customizations.sshkey]] user = "root" key = "SSH key for root"
注記既存ユーザーに対してのみ、
customizations.sshkey
カスタマイズを設定できます。ユーザーを作成して SSH キーを設定するには、追加ユーザーの指定 のカスタマイズを参照してください。
1.3.8.8. カーネル引数の追加
ブートローダーのカーネルコマンドラインに引数を追加できます。デフォルトでは、RHEL Image Builder はデフォルトのカーネルをイメージにビルドします。ただし、ブループリントでカーネルを設定することでカーネルをカスタマイズできます。
デフォルト設定にカーネルの起動パラメーターオプションを追加します。
[customizations.kernel] append = "KERNEL-OPTION"
以下に例を示します。
[customizations.kernel] name = "kernel-debug" append = "nosmt=force"
1.3.8.9. リアルタイムカーネルを使用した RHEL イメージのビルド
リアルタイムカーネル (kernel-rt
) を使用して RHEL イメージをビルドするには、デフォルトカーネルとして kernel-rt
が正しく選択されたイメージをビルドできるように、リポジトリーをオーバーライドする必要があります。/usr/share/osbuild-composer/repositories/
ディレクトリーの .json
を使用してください。その後、ビルドしたイメージをシステムにデプロイし、リアルタイムカーネル機能を使用できます。
リアルタイムカーネルは、Red Hat Enterprise Linux の動作認定を受けた AMD64 および Intel 64 サーバープラットフォームで動作します。
前提条件
- システムが登録され、RHEL が RHEL for Real Time サブスクリプションに割り当てられている。dnf を使用した RHEL for Real Time のインストール を参照してください。
手順
以下のディレクトリーを作成します。
# mkdir /etc/osbuild-composer/repositories/
/usr/share/osbuild-composer/repositories/rhel-8.version.json
ファイルの内容を新しいディレクトリーにコピーします。# cp /usr/share/osbuild-composer/repositories/rhel-8.version.json /etc/osbuild-composer/repositories
/etc/osbuild-composer/repositories/rhel-8.version.json
ファイルを編集して、RT カーネルリポジトリーを含めます。# grep -C 6 kernel-rt /etc/osbuild-composer/repositories/rhel-8.version.json "baseurl": "https://cdn.redhat.com/content/dist/rhel8/8.version/x86_64/appstream/os", "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nm………..=\n=UZd/\n-----END PGP PUBLIC KEY BLOCK-----\n", "rhsm": true, "check_gpg": true }, { "name": "kernel-rt", "baseurl": "https://cdn.redhat.com/content/dist/rhel8/8.version/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 },
サービスを再起動します。
# systemctl restart osbuild-composer
kernel-rt
が.json
ファイルに含まれていることを確認します。# composer-cli sources list # composer-cli sources info kernel-rt
以前に設定した URL が表示されます。
ブループリントを作成します。ブループリントに、"[customizations.kernel]" カスタマイズを追加します。以下は、ブループリントに "[customizations.kernel]" を追加した例です。
name = "rt-kernel-image" description = "" version = "2.0.0" modules = [] groups = [] distro = "rhel-8_version_" [[customizations.user]] name = "admin" password = "admin" groups = ["users", "wheel"] [customizations.kernel] name = "kernel-rt" append = ""
ブループリントをサーバーにプッシュします。
# composer-cli blueprints push rt-kernel-image.toml
作成したブループリントからイメージをビルドします。次の例では、(
.qcow2
) イメージをビルドします。# composer-cli compose start rt-kernel-image qcow2
- ビルドしたイメージを、リアルタイムカーネル機能を使用するシステムにデプロイします。
検証
イメージから仮想マシンを起動した後、デフォルトのカーネルとして
kernel-rt
が正しく選択されたイメージがビルドされていることを確認します。$ cat /proc/cmdline BOOT_IMAGE=(hd0,got3)/vmlinuz-5.14.0-362.24.1..el8_version_.x86_64+rt...
1.3.8.10. タイムゾーンと NTP の設定
ブループリントをカスタマイズして、タイムゾーンと Network Time Protocol (NTP) を設定できます。timezone
属性と ntpservers
属性は両方ともオプションの文字列です。タイムゾーンをカスタマイズしない場合、システムは 協定世界時 (UTC) を使用します。NTP サーバーを設定しない場合、システムはデフォルトのディストリビューションを使用します。
必要な
timezone
とntpservers
を使用してブループリントをカスタマイズします。[customizations.timezone] timezone = "TIMEZONE" ntpservers = "NTP_SERVER"
以下に例を示します。
[customizations.timezone] timezone = "US/Eastern" ntpservers = ["0.north-america.pool.ntp.org", "1.north-america.pool.ntp.org"]
注記Google Cloud などの一部のイメージタイプには、すでに NTP サーバーがセットアップされています。そのようなイメージでは、選択されている環境で NTP サーバーを起動する必要があるため、これをオーバーライドすることはできません。ただし、ブループリントでタイムゾーンをカスタマイズできます。
1.3.8.11. ロケール設定のカスタマイズ
作成されるシステムイメージのロケール設定をカスタマイズできます。language
属性と keyboard
属性は両方とも必須です。他の多くの言語を追加できます。最初に追加する言語はプライマリー言語で、他の言語はセカンダリー言語です。
手順
ロケール設定を行います。
[customizations.locale] languages = ["LANGUAGE"] keyboard = "KEYBOARD"
以下に例を示します。
[customizations.locale] languages = ["en_US.UTF-8"] keyboard = "us"
言語でサポートされている値を一覧表示するには、以下のコマンドを実行します。
$ localectl list-locales
キーボードでサポートされている値を一覧表示するには、以下のコマンドを実行します。
$ localectl list-keymaps
1.3.8.12. ファイアウォールのカスタマイズ
生成されたシステムイメージのファイアウォールを設定します。デフォルトでは、ファイアウォールは、sshd
など、ポートを明示的に有効にするサービスを除き、着信接続をブロックします。
[customizations.firewall]
または [customizations.firewall.services]
を使用したくない場合は、属性を削除するか、空のリスト [] に設定します。デフォルトのファイアウォールセットアップのみを使用する場合は、ブループリントからカスタマイズを省略できます。
Google および OpenStack テンプレートは、環境のファイアウォールを明示的に無効にします。ブループリントを設定してこの動作をオーバーライドすることはできません。
手順
他のポートとサービスを開くには、次の設定を使用してブループリントをカスタマイズします。
[customizations.firewall] ports = ["PORTS"]
ここで、
ports
は、ポート、または開くポートとプロトコルの範囲を含む文字列のオプションのリストです。port:protocol
形式を使用してポートを設定できます。portA-portB:protocol
形式を使用してポート範囲を設定できます。以下に例を示します。[customizations.firewall] ports = ["22:tcp", "80:tcp", "imap:tcp", "53:tcp", "53:udp", "30000-32767:tcp", "30000-32767:udp"]
/etc/services
の数値ポートまたはその名前を使用して、ポートリストを有効または無効にすることができます。customizations.firewall.service
セクションで、どのファイアウォールサービスを有効または無効にするかを指定します。[customizations.firewall.services] enabled = ["SERVICES"] disabled = ["SERVICES"]
利用可能なファイアウォールサービスを確認できます。
$ firewall-cmd --get-services
以下に例を示します。
[customizations.firewall.services] enabled = ["ftp", "ntp", "dhcp"] disabled = ["telnet"]
注記firewall.services
にリストされているサービスは、/etc/services
ファイルで使用可能なservice-names
とは異なります。
1.3.8.13. サービスの有効化または無効化
システムの起動時に有効にするサービスを制御することができます。一部のイメージタイプでは、イメージが正しく機能するようにすでにサービスが有効または無効になっており、このセットアップをオーバーライドすることができません。ブループリントの [customizations.services]
設定はこれらのサービスを置き換えるものではありませんが、イメージテンプレートにすでに存在するサービスのリストにサービスを追加します。
起動時に有効にするサービスをカスタマイズします。
[customizations.services] enabled = ["SERVICES"] disabled = ["SERVICES"]
以下に例を示します。
[customizations.services] enabled = ["sshd", "cockpit.socket", "httpd"] disabled = ["postfix", "telnetd"]
1.3.8.14. パーティションモードの指定
ビルドするディスクイメージをパーティション設定する方法を選択するには、partitioning_mode
変数を使用します。サポートされている次のモードでイメージをカスタマイズできます。
-
auto-lvm
: 1 つ以上のファイルシステムのカスタマイズがない限り、RAW パーティションモードを使用します。ある場合は、LVM パーティションモードを使用します。 -
lvm
: 追加のマウントポイントがない場合でも、常に LVM パーティションモードを使用します。 -
raw
: マウントポイントが 1 つ以上ある場合でも、RAW パーティションを使用します。 次のカスタマイズを使用して、
partitioning_mode
変数を使用してブループリントをカスタマイズできます。[customizations] partitioning_mode = "lvm"
1.3.8.15. カスタムファイルシステム設定の指定
ブループリントでカスタムファイルシステム設定を指定できるため、デフォルトのレイアウト設定ではなく、特定のディスクレイアウトでイメージを作成できます。ブループリントでデフォルト以外のレイアウト設定を使用すると、次の利点が得られます。
- セキュリティーベンチマークへの準拠
- ディスク外エラーに対する保護
- パフォーマンスの向上
- 既存のセットアップとの整合性
OSTree イメージには読み取り専用などの独自のマウントルールがあるため、OSTree システムではファイルシステムのカスタマイズはサポートされません。次のイメージタイプはサポートされません。
-
image-installer
-
edge-installer
-
edge-simplified-installer
さらに、次のイメージタイプはパーティション設定されたオペレーティングシステムイメージを作成しないため、ファイルシステムのカスタマイズをサポートしません。
-
edge-commit
-
edge-container
-
tar
-
container
RHEL 8.10 および 9.4 より前のリリースディストリビューションの場合、ブループリントは次の mountpoints
とそのサブディレクトリーをサポートします。
-
/
- ルートマウントポイント -
/var
-
/home
-
/opt
-
/srv/
-
/usr
-
/app
-
/data
-
/tmp
RHEL 9.4 および 8.10 以降のリリースディストリビューションでは、オペレーティングシステム用に予約されている特定のパスを除き、任意のカスタムマウントポイントを指定できます。
次のマウントポイントとそのサブディレクトリーに任意のカスタムマウントポイントを指定することはできません。
-
/bin
-
/boot/efi
-
/dev
-
/etc
-
/lib
-
/lib64
-
/lost+found
-
/proc
-
/run
-
/sbin
-
/sys
-
/sysroot
-
/var/lock
-
/var/run
ブループリントで /usr
カスタムマウントポイントのファイルシステムはカスタマイズできますが、そのサブディレクトリーはカスタマイズできません。
マウントポイントのカスタマイズは、RHEL 8.5 ディストリビューション以降、CLI を使用した場合のみサポートされます。以前のディストリビューションでは、root
パーティションをマウントポイントとして指定し、size 引数をイメージ size
のエイリアスとして指定することしかできません。RHEL 8.6 以降、osbuild-composer-46.1-1.el8
RPM 以降のバージョンでは、物理パーティションは使用できなくなり、ファイルシステムのカスタマイズによって論理ボリュームが作成されます。
カスタマイズされたイメージに複数のパーティションがある場合、LVM でカスタマイズされたファイルシステムパーティションを使用してイメージを作成し、実行時にそれらのパーティションのサイズを変更できます。これを行うには、ブループリントでカスタマイズされたファイルシステム設定を指定して、必要なディスクレイアウトでイメージを作成します。デフォルトのファイルシステムレイアウトは変更されません。ファイルシステムをカスタマイズせずにプレーンイメージを使用すると、ルートパーティションは cloud-init
によってサイズ変更されます。
ブループリントは、ファイルシステムのカスタマイズを LVM パーティションに自動的に変換します。
カスタムファイルブループリントのカスタマイズを使用して、新しいファイルを作成したり、既存のファイルを置き換えたりできます。指定するファイルの親ディレクトリーが存在している必要があります。存在しない場合、イメージのビルドが失敗します。[[customizations.directories]]
のカスタマイズで親ディレクトリーを指定して、親ディレクトリーが存在することを確認してください。
ファイルのカスタマイズを他のブループリントのカスタマイズと組み合わせると、他のカスタマイズの機能に影響が生じたり、現在のファイルのカスタマイズがオーバーライドされる可能性があります。
1.3.8.15.1. カスタマイズされたファイルをブループリントで指定する
[[customizations.files]]
ブループリントのカスタマイズを使用すると、次のことが可能になります。
- 新しいテキストファイルを作成する。
- 既存のファイルを変更する。警告: これにより、既存のコンテンツが上書きされる可能性があります。
- 作成するファイルのユーザーとグループの所有権を設定する。
- モード許可を 8 進数形式で設定する。
以下のファイルは作成または置き換えることはできません。
-
/etc/fstab
-
/etc/shadow
-
/etc/passwd
-
/etc/group
[[customizations.files]]
および [[customizations.directories]]
ブループリントのカスタマイズを使用して、イメージ内にカスタマイズされたファイルとディレクトリーを作成できます。これらのカスタマイズは、/etc
ディレクトリーでのみ使用できます。
これらのブループリントのカスタマイズは、OSTree コミットをデプロイするイメージタイプ (edge-raw-image
、edge-installer
、edge-simplified-installer
など) を除く、すべてのイメージタイプでサポートされます。
mode
、user
、または group
がすでに設定されているイメージ内にすでに存在するディレクトリーパスで customizations.directories
を使用すると、イメージビルドで既存のディレクトリーの所有権または権限の変更を防ぐことができません。
1.3.8.15.2. カスタマイズされたディレクトリーをブループリントで指定する
[[customizations.directories]]
ブループリントのカスタマイズを使用すると、以下を行うことができます。
- 新しいディレクトリーを作成する。
- 作成するディレクトリーのユーザーとグループの所有権を設定する。
- ディレクトリーモードのパーミッションを 8 進数形式で設定する。
- 必要に応じて親ディレクトリーを作成する。
[[customizations.files]]
ブループリントのカスタマイズを使用すると、次のことが可能になります。
- 新しいテキストファイルを作成する。
- 既存のファイルを変更する。警告: これにより、既存のコンテンツが上書きされる可能性があります。
- 作成するファイルのユーザーとグループの所有権を設定する。
- モード許可を 8 進数形式で設定する。
以下のファイルは作成または置き換えることはできません。
-
/etc/fstab
-
/etc/shadow
-
/etc/passwd
-
/etc/group
以下のカスタマイズが可能です。
ブループリントのファイルシステム設定をカスタマイズします。
[[customizations.filesystem]] mountpoint = "MOUNTPOINT" minsize = MINIMUM-PARTITION-SIZE
MINIMUM-PARTITION-SIZE
値には、デフォルトのサイズ形式はありません。ブループリントのカスタマイズでは、kB から TB、および KiB から TiB の値と単位がサポートされています。たとえば、マウントポイントのサイズをバイト単位で定義できます。[[customizations.filesystem]] mountpoint = "/var" minsize = 1073741824
単位を使用してマウントポイントのサイズを定義します。以下に例を示します。
[[customizations.filesystem]] mountpoint = "/opt" minsize = "20 GiB"
[[customizations.filesystem]] mountpoint = "/boot" minsize = "1 GiB"
minsize
を設定して最小パーティションを定義します。以下に例を示します。[[customizations.filesystem]] mountpoint = "/var" minsize = 2147483648
[[customizations.directories]]
を使用して、イメージ用にカスタマイズされたディレクトリーを/etc
ディレクトリーの下に作成します。[[customizations.directories]] path = "/etc/directory_name" mode = "octal_access_permission" user = "user_string_or_integer" group = "group_string_or_integer" ensure_parents = boolean
ブループリントの各エントリーを説明します。
-
path
- 必須 - 作成するディレクトリーへのパスを入力します。/etc
ディレクトリー下の絶対パスである必要があります。 -
mode
- オプション - ディレクトリーのアクセスパーミッションを 8 進数形式で設定します。パーミッションを指定しない場合、デフォルトで 0755 に設定されます。先頭のゼロは任意です。 -
user
- オプション - ユーザーをディレクトリーの所有者として設定します。ユーザーを指定しない場合は、デフォルトでroot
に設定されます。ユーザーは文字列または整数として指定できます。 -
group
- オプション - グループをディレクトリーの所有者として設定します。グループを指定しない場合は、デフォルトでroot
になります。グループは文字列または整数として指定できます。 -
ensure_parents
- オプション - 必要に応じて親ディレクトリーを作成するかどうかを指定します。値を指定しない場合は、デフォルトでfalse
に設定されます。
-
[[customizations.directories]]
を使用して、イメージ用にカスタマイズされたファイルを/etc
ディレクトリーの下に作成します。[[customizations.files]] path = "/etc/directory_name" mode = "octal_access_permission" user = "user_string_or_integer" group = "group_string_or_integer" data = "Hello world!"
ブループリントの各エントリーを説明します。
-
path
- 必須 - 作成するファイルへのパスを入力します。/etc
ディレクトリー下の絶対パスである必要があります。 -
mode
- オプション - ファイルのアクセスパーミッションを 8 進数形式で設定します。パーミッションを指定しない場合、デフォルトで 0644 に設定されます。先頭のゼロは任意です。 -
user
- オプション - ユーザーをファイルの所有者として設定します。ユーザーを指定しない場合は、デフォルトでroot
に設定されます。ユーザーは文字列または整数として指定できます。 -
group
- オプション - グループをファイルの所有者として設定します。グループを指定しない場合は、デフォルトでroot
になります。グループは文字列または整数として指定できます。 -
data
- オプション - プレーンテキストファイルの内容を指定します。コンテンツを指定しない場合は、空のファイルが作成されます。
-
1.3.9. RHEL Image Builder によってインストールされるパッケージ
RHEL Image Builder を使用してシステムイメージを作成すると、システムは一連のベースパッケージグループをインストールします。
ブループリントにコンポーネントを追加する場合は、追加したコンポーネント内のパッケージが他のパッケージコンポーネントと競合しないようにしてください。そうしないと、システムは依存関係を解決できず、カスタマイズされたイメージの作成に失敗します。次のコマンドを実行して、パッケージ間に競合がないかどうかを確認できます。
# composer-cli blueprints depsolve BLUEPRINT-NAME
デフォルトでは、RHEL Image Builder は Core
グループをパッケージの基本リストとして使用します。
イメージタイプ | デフォルトパッケージ |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.3.10. カスタムイメージで有効なサービス
Image Builder を使用してカスタムイメージを設定する場合、イメージが使用するデフォルトのサービスは次のように決定されます。
-
osbuild-composer
ユーティリティーを使用する RHEL リリース - イメージの種類
たとえば、ami
イメージタイプは、デフォルトで sshd
、chronyd
、および cloud-init
サービスを有効にします。これらのサービスが有効になっていない場合、カスタムイメージは起動しません。
イメージタイプ | デフォルトで有効化されているサービス |
---|---|
| sshd, cloud-init, cloud-init-local, cloud-config, cloud-final |
| sshd, cloud-init, cloud-init-local, cloud-config, cloud-final |
| cloud-init |
| デフォルトでは、追加のサービスは有効になりません。 |
| デフォルトでは、追加のサービスは有効になりません。 |
| sshd, chronyd, waagent, cloud-init, cloud-init-local, cloud-config, cloud-final |
| sshd、chronyd、vmtoolsd、cloud-init |
注記:システムの起動時に有効にするサービスをカスタマイズできます。ただし、カスタマイズは、前述のイメージタイプに対してデフォルトで有効になっているサービスを上書きしません。
関連情報