第18章 Ignition を使用した初回ブート時の bootc イメージの設定
Ignition ツールを使用すると、初回ブート時に bootc システムを動的に設定できます。Ignition を使用すると、少数のベースイメージを標準化し、実行時にそのイメージをカスタマイズできます。これにより、ハードウェアや環境の組み合わせごとに、イメージのバリアントを個別に作成する必要がなくなります。
Ignition は初回ブート時に、ユーザーが指定した設定ファイルを実行し、システム起動前にネットワーク、ユーザー、ストレージなどの環境固有の詳細を設定します。
18.1. Ignition を使用した bootc での動的プロビジョニングについて リンクのコピーリンクがクリップボードにコピーされました!
Ignition は、initramfs フェーズ中に Linux システムを設定する初回ブート時のプロビジョニングシステムです。Ignition を使用すると、複数のイメージのバリアントを管理することなく、bootc システムを動的に設定できます。
Ignition は、システムの初回ブート時に一度だけ実行されます。宣言型の設定ファイルを読み込み、システムが実際のルートファイルシステムに移行する前に、指定された変更を適用します。
Ignition は、以下の設定タスクを実行できます。
- ユーザーとグループを作成する
- SSH 認証鍵を追加する
- ファイルとディレクトリーを書き込む
- systemd ユニットを設定する
- ディスクパーティションとファイルシステムを設定する
ネットワーク設定を行う
- Ignition と
bootcの連携の仕組み bootcイメージは、アトミックな更新とロールバックのためにOSTreeを使用します。Ignition は、initramfsフェーズ中に/varディレクトリーを書き込み可能な状態でマウントすることでOSTreeと統合します。これにより、設定変更を永続化が可能になります。以下の手順は、Ignition の起動プロセスを示しています。
-
ブートローダーが
ignition.firstbootカーネルパラメーターを渡します。 -
initramfsが Ignition サービスをロードして起動します。 - Ignition がプラットフォーム固有のデータソースから設定を取得します。
-
Ignition は
/varを書き込み可能な状態でマウントし、設定を適用します。 -
initramfsが実際のルートファイルシステムに移行します。 - 最初の起動が完了すると、システムが firstboot マーカーを削除します。
-
ブートローダーが
Ignitionを使用するメリット-
コアとなるオペレーティングシステムイメージを汎用的かつインフラストラクチャー全体で再利用可能にするには、
Ignitionを使用してブート時に環境固有の設定を注入することで、"一度だけビルドし、実行時に設定" というアプローチを実現できます。このアプローチには次の利点があります。
- Ignition と
- イメージの無秩序な増加の抑制: 十数種類のバリアントではなく、少数のベースイメージを維持するだけで済みます。
- 動的な設定: ブート時に、DNS リゾルバー、NTP サーバー、ネットワークパラメーターなどの環境固有の設定を適用できます。
-
宣言型プロビジョニング: 必要なシステム状態を
JSON設定ファイルで定義できます。 - 初回ブート時のみ実行: Ignition は初期プロビジョニング時に一度だけ実行されます。これにより、その後の再起動時に意図せず再設定されることが防止されます。