Skip to content

feat: add UnattendedInstall config and controller#13591

Open
shanduur wants to merge 1 commit into
siderolabs:mainfrom
shanduur:feat/unattended-install-config
Open

feat: add UnattendedInstall config and controller#13591
shanduur wants to merge 1 commit into
siderolabs:mainfrom
shanduur:feat/unattended-install-config

Conversation

@shanduur

Copy link
Copy Markdown
Member

Replace the deprecated v1alpha1 .machine.install section with a new
UnattendedInstall multi-document config kind, driven by a dedicated
UnattendedInstallController (single-flight, no reboot) that exposes an
UnattendedInstallStatus resource.

  • Deprecate .machine.install; no longer required in validation.
  • Gate behind version contract (>= 1.14); talosctl gen config and
    cluster create emit UnattendedInstall by default for new contracts,
    translating --install-disk into a CEL disk selector.
  • Source legacyBIOSSupport/grubUseUKICmdline from the new document in
    the installer, falling back to .machine.install.
  • Skip the legacy install sequence (and its reboot) when the document is
    present; install is reconciled out-of-band.

Signed-off-by: Mateusz Urbanek mateusz.urbanek@siderolabs.com

@github-project-automation github-project-automation Bot moved this to To Do in Planning Jun 16, 2026
@talos-bot talos-bot moved this from To Do to In Review in Planning Jun 16, 2026
@shanduur shanduur force-pushed the feat/unattended-install-config branch from 84d542d to 48fc83b Compare June 17, 2026 09:00
@frezbo

frezbo commented Jun 17, 2026

Copy link
Copy Markdown
Member

I think legacyBIOSSupport is something really old and we should drop it, I don't think any code uses that

// description: |
// Indicates if legacy GRUB bootloader should use kernel cmdline from the UKI instead of building it on the host.
// This changes the way cmdline is managed with GRUB bootloader to be more consistent with UKI/systemd-boot.
InstallGrubUseUKICmdline *bool `yaml:"grubUseUKICmdline,omitempty"`

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should lock it to true in the new config, we don't need to keep backwards compatibility in the new machine config document.

// description: |
// Indicates if MBR partition should be marked as bootable (active).
// Should be enabled only for the systems with legacy BIOS that doesn't support GPT partitioning scheme.
InstallLegacyBIOSSupport *bool `yaml:"legacyBIOSSupport,omitempty"`

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same as Noel, I think we can skip it for now, not sure if anyone still needs this, this is only for legacy/BIOS boot flow on some old hardware.... if someone needs that still (I don't think we even test it today), it could be in the API (?)

@shanduur shanduur force-pushed the feat/unattended-install-config branch 11 times, most recently from 8020d0d to 0dc50b1 Compare June 17, 2026 17:10
@shanduur shanduur added integration/misc Run all misc integration tests (misc-0 through misc-4) integration/qemu Run QEMU integration tests (all variants) integration/qemu-enforcing Run QEMU integration tests on enforcing variant integration/qemu-race Run QEMU integration tests with the race detector labels Jun 17, 2026
Replace the deprecated v1alpha1 `.machine.install` section with a new
`UnattendedInstall` multi-document config kind, driven by a dedicated
`UnattendedInstallController` (single-flight, no reboot) that exposes an
`UnattendedInstallStatus` resource.

- Deprecate `.machine.install`; no longer required in validation.
- Gate behind version contract (>= 1.14); `talosctl gen config` and
  `cluster create` emit `UnattendedInstall` by default for new contracts,
  translating `--install-disk` into a CEL disk selector.
- Source `legacyBIOSSupport`/`grubUseUKICmdline` from the new document in
  the installer, falling back to `.machine.install`.
- Skip the legacy install sequence (and its reboot) when the document is
  present; install is reconciled out-of-band.

Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
@shanduur shanduur force-pushed the feat/unattended-install-config branch from 0dc50b1 to 491ce75 Compare June 18, 2026 07:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

integration/misc Run all misc integration tests (misc-0 through misc-4) integration/qemu Run QEMU integration tests (all variants) integration/qemu-enforcing Run QEMU integration tests on enforcing variant integration/qemu-race Run QEMU integration tests with the race detector status/ok-to-test

Projects

Status: In Review

Development

Successfully merging this pull request may close these issues.

4 participants