Red Hat Training

A Red Hat training course is available for RHEL 8

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

現在、多くのイメージを Blueprint でカスタマイズできます。このオプションを使用できるようにするには、最初に Blueprint で設定し、Image Builder にインポート (プッシュ) する必要があります。

注記

このようなカスタマイズは、現在、添付の cockpit-composer GUI ではサポートされていません。

手順

  1. イメージのホスト名を設定します。

    [customizations]
    hostname = "baseimage"
  2. 作成されるシステムイメージに対してユーザーを指定します。

    [[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
    重要

    ハッシュを生成する場合は、システムに python3 をインストールする必要があります。以下のコマンドで、python3 パッケージをインストールします。

    # yum install python3

    PASSWORD-HASH は、パスワードハッシュに置き換えます。ハッシュを生成するには、次のようなコマンドを実行します。

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

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

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

    必要に応じて任意の行を省略します。ユーザー名のみが必須となります。

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

  3. 作成されるシステムイメージにしてグループを指定します。

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

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

  4. 既存ユーザーの SSH 鍵を設定します。

    [[customizations.sshkey]]
    user = "root"
    key = "PUBLIC-SSH-KEY"
    注記

    このオプションは、既存ユーザーにのみ適用されます。ユーザーを作成して ssh 鍵を設定するには、作成されたシステムイメージのカスタマイズのユーザー仕様 を使用します。

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

    [customizations.kernel]
    append = "KERNEL-OPTION"
  6. イメージのホスト名を設定します。

    [customizations]
    hostname = "BASE-IMAGE"
  7. 作成されるシステムイメージのグループを追加します。

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

    名前のみが必要であり、GID は任意です。

  8. 作成されたシステムイメージにタイムゾーンおよび Network Time Protocol (NTP) サーバーを設定します。

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

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

  9. 作成されたシステムイメージのロケールを設定します。

    [customizations.locale]
    languages = ["LANGUAGE"]
    keyboard = "KEYBOARD"

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

  10. 作成されたシステムイメージのファイアウォールを設定します。

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

    /etc/services ファイルの数値ポートまたは名前を使用して、一覧を有効化できます。

  11. ファイアウォールサービスをカスタマイズします。

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

    $ firewall-cmd --get-services

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

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

    firewall.services に表示されるサービスは、/etc/services ファイルにある名前とは異なります。

    オプションで、作成予定のシステムイメージに対するファイアウォールサービスをカスタマイズできます。

    注記

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

  12. システムの起動時に有効にするサービスの設定

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

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

  13. Git リポジトリーから Blueprint へのファイルの追加

    [[repos.git]]
    rpmname = "RPM-NAME"
    rpmversion = "RPM-VERSION"
    rpmrelease = "RPM-RELEASE"
    summary = "RPM-SUMMARY"
    repo = "REPO-URL"
    ref = "GIT-REF"
    destination = "SERVICES"

    エントリーを使用して、git リポジトリーから作成されたイメージにファイルを追加できます。

    たとえば、server-config-1.0-1.noarch.rpm という名前の RPM パッケージを作成するには、Blueprint に以下の情報を追加します。

    _RPM-NAME を、作成する RPM パッケージの名前に置き換えます。これは、生成される tar アーカイブの接頭辞名でもあります。

    RPM-VERSION は、RPM パッケージのバージョン (「1.0.0」など) に置き換えます。

    RPM-RELEASE は、RPM パッケージリリースのバージョンに置き換えます (「1」など)。

    RPM-SUMMARY は、RPM パッケージの要約文字列に置き換えます。

    REPO-URL を、クローンを作成する get リポジトリーの URL に置き換え、そこからアーカイブを作成します。

    GIT-REF を git 参照に置き換え、たとえば origin/branch-namegit tag、または git commit hash を確認します。

    RPM パッケージのインストール時に、SERVICES を git リポジトリーのディレクトリーをインストールするパスに置き換えます。

    これにより、指定した git リポジトリーがクローンされ、指定された git 参照が確認され、ファイルを宛先パス (/opt/server/ など) にインストールする RPM パッケージが作成されます。RPM には、リポジトリーの詳細と、リポジトリーの作成に使用する参照に関するサマリーが含まれます。RPM パッケージは、イメージビルドのメタデータにも含まれています。

    注記

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