B ブループリント形式

ブループリントの内容は、基本メタデータ情報、パッケージ情報およびカスタマイズからなります。

ブループリントは、Image Builderのカスタム・イメージの仕様を提供します。一般的なブループリント・ファイル内の要素としては、1)基本メタデータ、2)パッケージ・リストおよび3)その他のカスタマイズがあります。ブループリント内のすべての構成エントリは、parameter = "value"の形式を使用して定義します。

メタデータおよびパッケージ情報は、ブループリントのルートで定義されます。

基本メタデータ情報

ブループリントのメタデータでは、そのブループリント自体についての一般情報が提供されます。メタデータは、ファイルの上部に入力され、次のもので構成されます:

  • name: ブループリントの名前(必須)。

  • description: ブループリントの説明(オプション)。

  • version: ブループリントのバージョン番号(必須)。このバージョンは、https://semver.org/にあるセマンティック・バージョニング・スキームに従ってます。

  • distro: イメージの基になるImage Builderリポジトリ内の必要なdistro (オプション)。distro値が空の場合、イメージはホスト・イメージのdistroに基づきます。

name = "myblueprint"
        description = "My Blueprint"
        version = "0.0.2"
        distro = "ol-8"

パッケージ情報

パッケージ情報とは、パッケージ、モジュール、コンテナおよびグループのリストを示す総称です。各エントリには、[[heading]]という形式で、対応する見出しがあります。

各見出しの下のパラメータは、その見出しで説明されている内容によって異なります。たとえば、パッケージとモジュールのリストには、パッケージの名前とバージョンが必要です。このバージョンの形式は、dnfバージョン仕様に従っています。たとえば、メジャー・リリースのバージョンは、n.n.nのように指定します(8.7.0など)。最新のパッケージ・バージョンを指定するには、バージョン番号のかわりにアスタリスク(*)を入力します。マイナー・リリースの場合は、major-number.*と入力します(8.*など)。

コンテナとグループでは、異なる情報が必要となり、異なるパラメータが使用されます。各パッケージ、モジュール、コンテナ、またはグループ・リストには、次の例で示すように、それ固有の見出しが必要です:

[[packages]]
name = "tmux"
version = "3.5"

[[packages]]
name = "python3"
version = "3.9.18"

[[groups]]
name = "graphical-admin-tools"
  • パッケージ: [[packages]]ブロックで定義されます。各エントリには、パッケージ名とバージョンが必要です。

  • パッケージ・グループ: [[groups]]ブロックで定義されます。各エントリには、パッケージ・グループの名前のみが必要です。

ノート:

パッケージ・グループは、一連の関連パッケージであり、リポジトリにそのように定義されます。このため、パッケージ・グループには、個別のパッケージと区別するために独自のブループリント見出し[[groups]]があります。

カスタマイズ

カスタマイズには、パッケージに関連付けられていないイメージのその他の仕様が含まれています。たとえば、ユーザー、グループ、キーなどです。

カスタマイズは、見出し[customizations]の下に定義し、より詳細なカスタマイズでは、見出しにキーワードを追加して識別しやすいようにします([[customizations.locale]]など)。カスタマイズには、通常は、パッケージ情報エントリより多くのパラメータが含まれています。

次の例では、イメージのホスト名、ロケール、タイムゾーンおよびグループに関するカスタマイズを示します。

[customizations]
hostname = "system1"

[[customizations.locale]]
languages = ["en_GB.utf8"]
keyboard = "gb"

[[customizations.timezone]]
timezone = "Europe/Dublin"
ntpservers = ["uk.pool.ntp.org"]

[[customizations.group]]
name = "students"

定義できるその他のカスタム・エントリとしては、次のものがあります:

  • ユーザー: ユーザーの名前、ホーム・ディレクトリ、ユーザーのデフォルト・シェル、そのユーザーが割り当てられているグループなど、特定のユーザー・アカウントに適用される必要なすべての詳細が含まれます。

  • SSH鍵: 特定のユーザーの名前と、そのユーザー用に作成する公開SSH鍵が含まれます。この鍵は、そのユーザーのauthorized_keysファイルに追加されます。

  • カーネル: ブートローダーのコマンドラインに追加する引数が含まれます。

  • ファイアウォール・ポート: 開くポートのリストが含まれます。ポートは、port:protocolという形式を使用して指定します(たとえば、22:tcp)。

  • ファイアウォール・サービス: そのイメージに対して有効化および無効化するサービスのリストを含む、別個のリスト。有効化または無効化できるサービスを特定するには、firewall-cmd --get-servicesコマンドを実行します。

  • Systemdサービス: ファイアウォール・サービスと同様に、このエントリには、イメージに対して有効化および無効化するsystemdサービスのリストが含まれます。

前述のリストは一部です。ブループリント・エントリをすべて示すリストは、https://osbuild.org/docs/user-guide/blueprint-reference/を参照してください。