Skip to content

feat(fleet): provision subordinate nodes from the adopt flow - #60

Merged
Bugs5382 merged 1 commit into
mainfrom
fix/59-adopt-subordinate
Jul 25, 2026
Merged

feat(fleet): provision subordinate nodes from the adopt flow#60
Bugs5382 merged 1 commit into
mainfrom
fix/59-adopt-subordinate

Conversation

@Bugs5382

Copy link
Copy Markdown
Contributor

What

Selects the first-boot ceremony by node role so the adopt flow can stand up subordinates, not just roots:

  • root → self-signs via FIRST_BOOT_ROOT (unchanged).
  • intermediate/issuing → skips the root ceremony (the node stages its own subordinate CSR on boot) and completes adoption in an awaiting-certificate state, registered with its managed admin credentials.

The parent-signed chain is then delivered by the existing SUBORDINATE enrollment ferry (child GetSubordinateCSR → parent SignSubordinateCSR → child SubmitSubordinateCertificate), bringing the node to established under its parent.

Why

Full web parity means an operator can stand up a two-tier CA (root + intermediate) without the CLI. Proven live on ESXi: adopted cryptos-lab-b as an intermediate (terminal awaiting-certificate), then a SUBORDINATE enrollment established it as "CryptOS Lab Intermediate CA" issued by "CryptOS Lab Root CA"; a subsequent subordinate rekey succeeded.

Stacked on #58 (base fix/57-adopt-orchestration); merge #58 first, then this.

Closes #59
Part of #24

@Bugs5382 Bugs5382 self-assigned this Jul 23, 2026
@github-actions github-actions Bot added the enhancement New feature (feat). Minor version bump. label Jul 23, 2026
Base automatically changed from fix/57-adopt-orchestration to main July 25, 2026 17:54
@Bugs5382 Bugs5382 added this to the v1.0.0 milestone Jul 25, 2026
The adopt handler hardcoded the root first-boot ceremony, so only self-signed
root nodes could be provisioned. Select the ceremony by role: a root self-signs
via FIRST_BOOT_ROOT as before; an intermediate/issuing node skips the ceremony
(the node stages its own subordinate CSR on boot) and completes adoption in an
awaiting-certificate state, registered and ready for a parent-signed chain.

The chain is delivered by the existing SUBORDINATE enrollment ferry (child CSR
-> parent SignSubordinateCSR -> child SubmitSubordinateCertificate), which
brings the node to established under its parent.

Closes #59
@Bugs5382
Bugs5382 force-pushed the fix/59-adopt-subordinate branch from 41fefbd to cb3d044 Compare July 25, 2026 17:55
@Bugs5382
Bugs5382 merged commit 9d75106 into main Jul 25, 2026
12 checks passed
@Bugs5382
Bugs5382 deleted the fix/59-adopt-subordinate branch July 25, 2026 17:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature (feat). Minor version bump.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(fleet): provision subordinate (intermediate/issuing) nodes from the web adopt wizard

1 participant