From 2f3cd7ed064184ccbd71b795e95515a91063e0c8 Mon Sep 17 00:00:00 2001 From: Cade Jacobson Date: Tue, 27 Jan 2026 13:48:21 -0800 Subject: [PATCH 01/10] Create a flowchart for the early ignition operation --- docs/ignition-flow.md | 79 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 docs/ignition-flow.md diff --git a/docs/ignition-flow.md b/docs/ignition-flow.md new file mode 100644 index 000000000..6824569ef --- /dev/null +++ b/docs/ignition-flow.md @@ -0,0 +1,79 @@ +```mermaid +flowchart TB + %% ===== IGNITION BOOT FLOW ===== + + %% --- Early Boot --- + A["ignition-setup-pre.service"] --> B["ignition-setup.service"] + B --> C["ignition-fetch-offline.service"] + + %% --- Fetch Offline Details --- + subgraph FETCH_OFFLINE ["Ignition Fetch Offline"] + direction TB + C0["Detect platform"] + C1["Check configs at:"] + C2["/usr/lib/ignition/base.d"] + C3["/usr/lib/ignition/base.platform.d/{platform}"] + C0 --> C1 + C1 --> C2 + C1 --> C3 + C4["Merge configs if present"] + C2 --> C4 + C3 --> C4 + end + C --> FETCH_OFFLINE + + FETCH_OFFLINE --> D["ignition-fetch.service"] + + %% --- Fetch Service Details --- + subgraph FETCH_ONLINE ["Ignition Fetch"] + direction TB + D0["Detect platform"] + D1["Check configs at:"] + D1a["/usr/lib/ignition/base.d"] + D1b["/usr/lib/ignition/base.platform.d/{platform}"] + D0 --> D1 + D1 --> D1a + D1 --> D1b + D2["Get IMDS userdata"] + D3["Open config device /dev/sr0"] + D1a --> D2 + D1b --> D2 + D2 --> D3 + end + D --> FETCH_ONLINE + + %% --- Network Stack --- + subgraph NETWORK ["Network Stack"] + direction TB + N1["systemd-networkd.service"] + N2["Find primary NIC"] + N3["Link up"] + N4["systemd-networkd.service - Network Configuration"] + N5["network.target reached"] + N6["Get DHCP address"] + N1 --> N2 --> N3 --> N4 --> N5 --> N6 + end + B --> NETWORK + NETWORK --> FETCH_ONLINE + + %% --- Disk & Mount Services --- + FETCH_ONLINE --> E["ignition-kargs.service"] + E --> F["ignition-disks.service"] + F --> G["ignition-diskful.target reached"] + G --> H["ignition-mount.service"] + + %% --- Files & Users --- + H --> I["ignition-files.service"] + I --> J["ignition-quench.service"] + J --> K["initrd-setup-root-after-ignition.service"] + J --> L["ignition-complete.target"] + + %% ===== STYLING ===== + classDef service fill:#050505,stroke:#01579b,stroke-width:2px + classDef target fill:#050505,stroke:#e65100,stroke-width:2px + classDef ideas fill:#fff9c4,stroke:#f57f17 + classDef concerns fill:#ffebee,stroke:#c62828 + + class A,B,C,D,E,F,H,I,J,K,N4 service + class G,L,N5 target +``` \ No newline at end of file From 454941a932c6f8a89724ad1386b7cde3dfde21bc Mon Sep 17 00:00:00 2001 From: Cade Jacobson Date: Tue, 27 Jan 2026 15:16:19 -0800 Subject: [PATCH 02/10] Improve color schemes --- docs/ignition-flow.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/ignition-flow.md b/docs/ignition-flow.md index 6824569ef..4e97662ad 100644 --- a/docs/ignition-flow.md +++ b/docs/ignition-flow.md @@ -69,10 +69,10 @@ flowchart TB J --> L["ignition-complete.target"] %% ===== STYLING ===== - classDef service fill:#050505,stroke:#01579b,stroke-width:2px - classDef target fill:#050505,stroke:#e65100,stroke-width:2px - classDef ideas fill:#fff9c4,stroke:#f57f17 - classDef concerns fill:#ffebee,stroke:#c62828 + classDef service fill:#42a5f5,stroke:#1565c0,stroke-width:2px,color:#000 + classDef target fill:#ffa726,stroke:#e65100,stroke-width:2px,color:#000 + classDef ideas fill:#fff59d,stroke:#f57f17,color:#000 + classDef concerns fill:#ef9a9a,stroke:#c62828,color:#000 class A,B,C,D,E,F,H,I,J,K,N4 service class G,L,N5 target From 8108b1a6600dbad2732deae730ae334d17258c42 Mon Sep 17 00:00:00 2001 From: Cade Jacobson Date: Tue, 27 Jan 2026 15:18:32 -0800 Subject: [PATCH 03/10] Remove IMDS call --- docs/ignition-flow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ignition-flow.md b/docs/ignition-flow.md index 4e97662ad..71ae06c79 100644 --- a/docs/ignition-flow.md +++ b/docs/ignition-flow.md @@ -34,7 +34,7 @@ flowchart TB D0 --> D1 D1 --> D1a D1 --> D1b - D2["Get IMDS userdata"] + D2["Request cloud specific configs"] D3["Open config device /dev/sr0"] D1a --> D2 D1b --> D2 From 3a7d40d62987feb2eb06bf02194a6f8da0a92ecd Mon Sep 17 00:00:00 2001 From: Cade Jacobson Date: Tue, 27 Jan 2026 15:33:38 -0800 Subject: [PATCH 04/10] Remove unused colors --- docs/ignition-flow.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/ignition-flow.md b/docs/ignition-flow.md index 71ae06c79..41e45520b 100644 --- a/docs/ignition-flow.md +++ b/docs/ignition-flow.md @@ -71,8 +71,6 @@ flowchart TB %% ===== STYLING ===== classDef service fill:#42a5f5,stroke:#1565c0,stroke-width:2px,color:#000 classDef target fill:#ffa726,stroke:#e65100,stroke-width:2px,color:#000 - classDef ideas fill:#fff59d,stroke:#f57f17,color:#000 - classDef concerns fill:#ef9a9a,stroke:#c62828,color:#000 class A,B,C,D,E,F,H,I,J,K,N4 service class G,L,N5 target From 60f66f49c9ad948d0f1ed0b1006592364673d795 Mon Sep 17 00:00:00 2001 From: Cade Jacobson Date: Tue, 27 Jan 2026 16:19:39 -0800 Subject: [PATCH 05/10] Use more descriptive names --- docs/ignition-flow.md | 90 +++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/docs/ignition-flow.md b/docs/ignition-flow.md index 41e45520b..6b6dd2f0e 100644 --- a/docs/ignition-flow.md +++ b/docs/ignition-flow.md @@ -3,75 +3,75 @@ flowchart TB %% ===== IGNITION BOOT FLOW ===== %% --- Early Boot --- - A["ignition-setup-pre.service"] --> B["ignition-setup.service"] - B --> C["ignition-fetch-offline.service"] + setup_pre["ignition-setup-pre.service"] --> setup["ignition-setup.service"] + setup --> fetch_offline["ignition-fetch-offline.service"] %% --- Fetch Offline Details --- subgraph FETCH_OFFLINE ["Ignition Fetch Offline"] direction TB - C0["Detect platform"] - C1["Check configs at:"] - C2["/usr/lib/ignition/base.d"] - C3["/usr/lib/ignition/base.platform.d/{platform}"] - C0 --> C1 - C1 --> C2 - C1 --> C3 - C4["Merge configs if present"] - C2 --> C4 - C3 --> C4 + offline_detect_platform["Detect platform"] + offline_check_configs["Check configs at:"] + offline_base_dir["/usr/lib/ignition/base.d"] + offline_platform_dir["/usr/lib/ignition/base.platform.d/{platform}"] + offline_detect_platform --> offline_check_configs + offline_check_configs --> offline_base_dir + offline_check_configs --> offline_platform_dir + offline_merge_configs["Merge configs if present"] + offline_base_dir --> offline_merge_configs + offline_platform_dir --> offline_merge_configs end - C --> FETCH_OFFLINE + fetch_offline --> FETCH_OFFLINE - FETCH_OFFLINE --> D["ignition-fetch.service"] + FETCH_OFFLINE --> fetch_service["ignition-fetch.service"] %% --- Fetch Service Details --- subgraph FETCH_ONLINE ["Ignition Fetch"] direction TB - D0["Detect platform"] - D1["Check configs at:"] - D1a["/usr/lib/ignition/base.d"] - D1b["/usr/lib/ignition/base.platform.d/{platform}"] - D0 --> D1 - D1 --> D1a - D1 --> D1b - D2["Request cloud specific configs"] - D3["Open config device /dev/sr0"] - D1a --> D2 - D1b --> D2 - D2 --> D3 + online_detect_platform["Detect platform"] + online_check_configs["Check configs at:"] + online_base_dir["/usr/lib/ignition/base.d"] + online_platform_dir["/usr/lib/ignition/base.platform.d/{platform}"] + online_detect_platform --> online_check_configs + online_check_configs --> online_base_dir + online_check_configs --> online_platform_dir + online_request_cloud_configs["Request cloud specific configs"] + online_open_config_device["Open config device /dev/sr0"] + online_base_dir --> online_request_cloud_configs + online_platform_dir --> online_request_cloud_configs + online_request_cloud_configs --> online_open_config_device end - D --> FETCH_ONLINE + fetch_service --> FETCH_ONLINE %% --- Network Stack --- subgraph NETWORK ["Network Stack"] direction TB - N1["systemd-networkd.service"] - N2["Find primary NIC"] - N3["Link up"] - N4["systemd-networkd.service - Network Configuration"] - N5["network.target reached"] - N6["Get DHCP address"] - N1 --> N2 --> N3 --> N4 --> N5 --> N6 + networkd_service["systemd-networkd.service"] + find_primary_nic["Find primary NIC"] + link_up["Link up"] + network_config["systemd-networkd.service - Network Configuration"] + network_target["network.target reached"] + get_dhcp_address["Get DHCP address"] + networkd_service --> find_primary_nic --> link_up --> network_config --> network_target --> get_dhcp_address end - B --> NETWORK + setup --> NETWORK NETWORK --> FETCH_ONLINE %% --- Disk & Mount Services --- - FETCH_ONLINE --> E["ignition-kargs.service"] - E --> F["ignition-disks.service"] - F --> G["ignition-diskful.target reached"] - G --> H["ignition-mount.service"] + FETCH_ONLINE --> kargs_service["ignition-kargs.service"] + kargs_service --> disks_service["ignition-disks.service"] + disks_service --> diskful_target["ignition-diskful.target reached"] + diskful_target --> mount_service["ignition-mount.service"] %% --- Files & Users --- - H --> I["ignition-files.service"] - I --> J["ignition-quench.service"] - J --> K["initrd-setup-root-after-ignition.service"] - J --> L["ignition-complete.target"] + mount_service --> files_service["ignition-files.service"] + files_service --> quench_service["ignition-quench.service"] + quench_service --> initrd_setup_root["initrd-setup-root-after-ignition.service"] + quench_service --> complete_target["ignition-complete.target"] %% ===== STYLING ===== classDef service fill:#42a5f5,stroke:#1565c0,stroke-width:2px,color:#000 classDef target fill:#ffa726,stroke:#e65100,stroke-width:2px,color:#000 - class A,B,C,D,E,F,H,I,J,K,N4 service - class G,L,N5 target + class setup_pre,setup,fetch_offline,fetch_service,kargs_service,disks_service,mount_service,files_service,quench_service,initrd_setup_root,network_config service + class diskful_target,complete_target,network_target target ``` \ No newline at end of file From bed1be31eac91315fc25ede91520054653a810c4 Mon Sep 17 00:00:00 2001 From: Cade Jacobson Date: Wed, 28 Jan 2026 10:53:12 -0800 Subject: [PATCH 06/10] Make DCHP a requirement for requesting cloud specific configs --- docs/ignition-flow.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/docs/ignition-flow.md b/docs/ignition-flow.md index 6b6dd2f0e..a57d83ef2 100644 --- a/docs/ignition-flow.md +++ b/docs/ignition-flow.md @@ -35,10 +35,15 @@ flowchart TB online_check_configs --> online_base_dir online_check_configs --> online_platform_dir online_request_cloud_configs["Request cloud specific configs"] - online_open_config_device["Open config device /dev/sr0"] + online_cloud_configs_present{"Cloud configs present?"} + online_use_cloud_configs["Merge configs if present"] + online_open_config_device["Open and read config device"] online_base_dir --> online_request_cloud_configs online_platform_dir --> online_request_cloud_configs - online_request_cloud_configs --> online_open_config_device + online_request_cloud_configs --> online_cloud_configs_present + online_cloud_configs_present -->|Yes| online_use_cloud_configs + online_cloud_configs_present -->|No| online_open_config_device + online_open_config_device --> online_use_cloud_configs end fetch_service --> FETCH_ONLINE @@ -50,11 +55,13 @@ flowchart TB link_up["Link up"] network_config["systemd-networkd.service - Network Configuration"] network_target["network.target reached"] - get_dhcp_address["Get DHCP address"] - networkd_service --> find_primary_nic --> link_up --> network_config --> network_target --> get_dhcp_address + networkd_service --> find_primary_nic --> link_up --> network_config --> network_target end setup --> NETWORK NETWORK --> FETCH_ONLINE + NETWORK --> get_dhcp_address["Get DHCP address"] + get_dhcp_address --> online_cloud_configs_present + %% --- Disk & Mount Services --- FETCH_ONLINE --> kargs_service["ignition-kargs.service"] @@ -72,6 +79,6 @@ flowchart TB classDef service fill:#42a5f5,stroke:#1565c0,stroke-width:2px,color:#000 classDef target fill:#ffa726,stroke:#e65100,stroke-width:2px,color:#000 - class setup_pre,setup,fetch_offline,fetch_service,kargs_service,disks_service,mount_service,files_service,quench_service,initrd_setup_root,network_config service + class setup_pre,setup,fetch_offline,fetch_service,kargs_service,disks_service,mount_service,files_service,quench_service,initrd_setup_root,network_config,networkd_service service class diskful_target,complete_target,network_target target ``` \ No newline at end of file From d049c0076b859497eb987d7cfde5332bbd81b434 Mon Sep 17 00:00:00 2001 From: Cade Jacobson Date: Wed, 28 Jan 2026 10:57:12 -0800 Subject: [PATCH 07/10] Correct the box DHCP points to --- docs/ignition-flow.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/ignition-flow.md b/docs/ignition-flow.md index a57d83ef2..0a1ca54eb 100644 --- a/docs/ignition-flow.md +++ b/docs/ignition-flow.md @@ -60,8 +60,7 @@ flowchart TB setup --> NETWORK NETWORK --> FETCH_ONLINE NETWORK --> get_dhcp_address["Get DHCP address"] - get_dhcp_address --> online_cloud_configs_present - + get_dhcp_address --> online_request_cloud_configs %% --- Disk & Mount Services --- FETCH_ONLINE --> kargs_service["ignition-kargs.service"] From 903f12ba54f4716316dd386d5b5251d42fbb1ad6 Mon Sep 17 00:00:00 2001 From: Cade Jacobson Date: Mon, 2 Feb 2026 09:06:51 -0800 Subject: [PATCH 08/10] Add afterburn-hostname service --- docs/ignition-flow.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/ignition-flow.md b/docs/ignition-flow.md index 0a1ca54eb..bc8e430cd 100644 --- a/docs/ignition-flow.md +++ b/docs/ignition-flow.md @@ -68,8 +68,10 @@ flowchart TB disks_service --> diskful_target["ignition-diskful.target reached"] diskful_target --> mount_service["ignition-mount.service"] - %% --- Files & Users --- + %% --- Files --- mount_service --> files_service["ignition-files.service"] + initrd_root_fs_target["initrd-root-fs.target"] --> afterburn_hostname_service["afterburn-hostname.service"] + afterburn_hostname_service -.-> files_service files_service --> quench_service["ignition-quench.service"] quench_service --> initrd_setup_root["initrd-setup-root-after-ignition.service"] quench_service --> complete_target["ignition-complete.target"] @@ -78,6 +80,6 @@ flowchart TB classDef service fill:#42a5f5,stroke:#1565c0,stroke-width:2px,color:#000 classDef target fill:#ffa726,stroke:#e65100,stroke-width:2px,color:#000 - class setup_pre,setup,fetch_offline,fetch_service,kargs_service,disks_service,mount_service,files_service,quench_service,initrd_setup_root,network_config,networkd_service service - class diskful_target,complete_target,network_target target + class setup_pre,setup,fetch_offline,fetch_service,kargs_service,disks_service,mount_service,files_service,quench_service,initrd_setup_root,network_config,networkd_service,afterburn_hostname_service service + class diskful_target,complete_target,network_target,initrd_root_fs_target target ``` \ No newline at end of file From bc474705249d2c59dfa03e3ab350ca24eb6261fd Mon Sep 17 00:00:00 2001 From: Cade Jacobson Date: Wed, 11 Feb 2026 10:17:43 -0800 Subject: [PATCH 09/10] Inlcude reboot in kargs service --- docs/ignition-flow.md | 45 ++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/docs/ignition-flow.md b/docs/ignition-flow.md index bc8e430cd..b9d45c111 100644 --- a/docs/ignition-flow.md +++ b/docs/ignition-flow.md @@ -1,11 +1,21 @@ ```mermaid +--- +config: + flowchart: + defaultRenderer: elk +--- flowchart TB %% ===== IGNITION BOOT FLOW ===== - + %% --- Early Boot --- - setup_pre["ignition-setup-pre.service"] --> setup["ignition-setup.service"] - setup --> fetch_offline["ignition-fetch-offline.service"] + subgraph EARLY_BOOT [" "] + direction TB + setup_pre["ignition-setup-pre.service"] --> setup["ignition-setup.service"] + setup --> fetch_offline["ignition-fetch-offline.service"] + end + boot["Boot"] --> setup_pre + %% --- Fetch Offline Details --- subgraph FETCH_OFFLINE ["Ignition Fetch Offline"] direction TB @@ -48,23 +58,29 @@ flowchart TB fetch_service --> FETCH_ONLINE %% --- Network Stack --- - subgraph NETWORK ["Network Stack"] - direction TB - networkd_service["systemd-networkd.service"] - find_primary_nic["Find primary NIC"] - link_up["Link up"] - network_config["systemd-networkd.service - Network Configuration"] - network_target["network.target reached"] - networkd_service --> find_primary_nic --> link_up --> network_config --> network_target + subgraph NETWORK_GROUP [" "] + subgraph NETWORK ["Network Stack"] + direction TB + networkd_service["systemd-networkd.service"] + find_primary_nic["Find primary NIC"] + link_up["Link up"] + network_config["systemd-networkd.service - Network Configuration"] + network_target["network.target reached"] + networkd_service --> find_primary_nic --> link_up --> network_config --> network_target + end + get_dhcp_address["Get DHCP address"] + NETWORK --> get_dhcp_address end setup --> NETWORK NETWORK --> FETCH_ONLINE - NETWORK --> get_dhcp_address["Get DHCP address"] get_dhcp_address --> online_request_cloud_configs %% --- Disk & Mount Services --- FETCH_ONLINE --> kargs_service["ignition-kargs.service"] - kargs_service --> disks_service["ignition-disks.service"] + kargs_service -->|kargs changed| reboot_kargs["Reboot"] + reboot_kargs --> setup_pre + + kargs_service -->|no changes| disks_service["ignition-disks.service"] disks_service --> diskful_target["ignition-diskful.target reached"] diskful_target --> mount_service["ignition-mount.service"] @@ -82,4 +98,7 @@ flowchart TB class setup_pre,setup,fetch_offline,fetch_service,kargs_service,disks_service,mount_service,files_service,quench_service,initrd_setup_root,network_config,networkd_service,afterburn_hostname_service service class diskful_target,complete_target,network_target,initrd_root_fs_target target + + style EARLY_BOOT fill:none,stroke:none + style NETWORK_GROUP fill:none,stroke:none ``` \ No newline at end of file From 9bf61ef9349958e171aff5bef9d97af9d32155f1 Mon Sep 17 00:00:00 2001 From: Cade Jacobson Date: Wed, 11 Feb 2026 10:38:05 -0800 Subject: [PATCH 10/10] Remove the elk renderer --- docs/ignition-flow.md | 43 ++++++++++++++----------------------------- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/docs/ignition-flow.md b/docs/ignition-flow.md index b9d45c111..92be4904c 100644 --- a/docs/ignition-flow.md +++ b/docs/ignition-flow.md @@ -1,20 +1,11 @@ ```mermaid ---- -config: - flowchart: - defaultRenderer: elk ---- flowchart TB %% ===== IGNITION BOOT FLOW ===== %% --- Early Boot --- - subgraph EARLY_BOOT [" "] - direction TB - setup_pre["ignition-setup-pre.service"] --> setup["ignition-setup.service"] - setup --> fetch_offline["ignition-fetch-offline.service"] - end - - boot["Boot"] --> setup_pre + boot["Boot"] --> setup_pre["ignition-setup-pre.service"] + setup_pre --> setup["ignition-setup.service"] + setup --> fetch_offline["ignition-fetch-offline.service"] %% --- Fetch Offline Details --- subgraph FETCH_OFFLINE ["Ignition Fetch Offline"] @@ -58,27 +49,23 @@ flowchart TB fetch_service --> FETCH_ONLINE %% --- Network Stack --- - subgraph NETWORK_GROUP [" "] - subgraph NETWORK ["Network Stack"] - direction TB - networkd_service["systemd-networkd.service"] - find_primary_nic["Find primary NIC"] - link_up["Link up"] - network_config["systemd-networkd.service - Network Configuration"] - network_target["network.target reached"] - networkd_service --> find_primary_nic --> link_up --> network_config --> network_target - end - get_dhcp_address["Get DHCP address"] - NETWORK --> get_dhcp_address + subgraph NETWORK ["Network Stack"] + direction TB + networkd_service["systemd-networkd.service"] + find_primary_nic["Find primary NIC"] + link_up["Link up"] + network_config["systemd-networkd.service - Network Configuration"] + network_target["network.target reached"] + networkd_service --> find_primary_nic --> link_up --> network_config --> network_target end setup --> NETWORK NETWORK --> FETCH_ONLINE + NETWORK --> get_dhcp_address["Get DHCP address"] get_dhcp_address --> online_request_cloud_configs %% --- Disk & Mount Services --- FETCH_ONLINE --> kargs_service["ignition-kargs.service"] - kargs_service -->|kargs changed| reboot_kargs["Reboot"] - reboot_kargs --> setup_pre + kargs_service -->|kargs changed| reboot_kargs["Reboot & restart from top"] kargs_service -->|no changes| disks_service["ignition-disks.service"] disks_service --> diskful_target["ignition-diskful.target reached"] @@ -98,7 +85,5 @@ flowchart TB class setup_pre,setup,fetch_offline,fetch_service,kargs_service,disks_service,mount_service,files_service,quench_service,initrd_setup_root,network_config,networkd_service,afterburn_hostname_service service class diskful_target,complete_target,network_target,initrd_root_fs_target target - - style EARLY_BOOT fill:none,stroke:none - style NETWORK_GROUP fill:none,stroke:none + ``` \ No newline at end of file