Ignition
initramfs内(userlandが起動する前)で初回起動時に1回だけ実行されるプロビジョニングユーティリティ。JSON形式の設定ファイルを読み込み、ディスクのパーティショニング/フォーマット、ファイル書き込み(通常ファイルやsystemdユニット等)、ユーザー作成などをブートプロセスの非常に早い段階で行う。CoreOS系ディストリビューションの初期設定機構。 #linux #infrastructure
cloud-initとの違い・経緯
CoreOSは元々coreos-cloudinit(cloud-initのCoreOS版)を使っていたが、これはOS起動後に動作するため、ディスクパーティションのような根本的な変更がしにくいという限界があった。Ignitionはその後継として開発され、CoreOS内部では約1年運用されたのち正式公開された。
- 実行タイミング — cloud-initは通常のinit処理の一部として起動後に動くため、ディスクパーティションのような変更がしにくい。Ignitionはinitramfs中に動くため、まっさらなディスクからでもPXEブート等でベアメタルのセットアップができる
- 設計方針 — Ignitionは初回起動時に1回だけ実行され、変数展開(variable substitution)のような複雑さを持たない、よりシンプルで予測可能な設計
- 設定フォーマット — cloud-initはYAMLだが、Ignitionは機械可読性を優先しJSONを採用
coreos-cloudinitは非推奨化され、現在は開発が止まっている。
設定の書き方
Ignition設定(JSON)は人間が直接書くには不向きなため、通常はYAMLで書いた設定をJSONへトランスパイルする2段階のワークフローを使う。
- Butane — 汎用のYAML→Ignition設定トランスパイラ
- FCC (Fedora CoreOS Configuration Format) — Fedora CoreOS向けの同種の仕組み
出典
- Ignition | Ignition documentation
- Producing an Ignition Config - Fedora Documentation
- Cloudy Journey: Introducing Ignition
- GitHub - coreos/coreos-cloudinit [DEPRECATED]
- CoreOS ignition support | oVirt