stratumctl admin nodes
Per-node administration (bootstrap-admin only)
stratumctl admin nodes [flags]Subcommands
Section titled “Subcommands”stratumctl admin nodes config: Download a node’s node.yaml, with its secrets redactedstratumctl admin nodes hardware-plan: A node’s hardware plan: what each disk and link was installed asstratumctl admin nodes join-code: Join codes: what a new machine presents to join the clusterstratumctl admin nodes joins: Machines that registered to join: approve, reject, follow
stratumctl admin nodes config
Section titled “stratumctl admin nodes config”Download a node’s node.yaml, with its secrets redacted
stratumctl admin nodes config <node-id> [flags]Download the node.yaml a node was installed from. Every secret in it (the admin password, the registry pull credentials, the operator webhook, the release mirror token, a join token) is replaced by the text <redacted> and its key is kept, so the file keeps its shape and can be edited and reused once the secrets are filled in again. The node redacts the file before it leaves the host; the download cannot be made unredacted. Each download is audited.
The file goes to standard output, or to –out. A node that cannot be reached answers 503, one with no node.yaml to give answers 409.
Examples
Section titled “Examples”stratumctl admin nodes config node-1stratumctl admin nodes config node-1 --out node-1.yaml| Flag | Type | Default | Description |
|---|---|---|---|
--out |
string | write the file here instead of standard output |
stratumctl admin nodes hardware-plan
Section titled “stratumctl admin nodes hardware-plan”A node’s hardware plan: what each disk and link was installed as
stratumctl admin nodes hardware-plan [flags]A node’s hardware plan: each disk’s role (system, compute with its pool and class, ceph-osd, unused) and each link’s purposes (oob, mgmt, storage, overlay, provider), written once at install and shown next to what the node reports. Admin > Metal shows the same record.
An edit applies through the reconciler that owns it, or is refused with the reason; nothing is stored that nothing applies.
Subcommands
Section titled “Subcommands”stratumctl admin nodes hardware-plan get: Show a node’s hardware plan next to what the node reportsstratumctl admin nodes hardware-plan set: Change disk roles and link purposes
stratumctl admin nodes hardware-plan get
Section titled “stratumctl admin nodes hardware-plan get”Show a node’s hardware plan next to what the node reports
stratumctl admin nodes hardware-plan get <node-id> [flags]Examples
Section titled “Examples”stratumctl admin nodes hardware-plan get node-1stratumctl admin nodes hardware-plan get node-1 --output jsonstratumctl admin nodes hardware-plan set
Section titled “stratumctl admin nodes hardware-plan set”Change disk roles and link purposes
stratumctl admin nodes hardware-plan set <node-id> [flags]Change disk roles and link purposes in a node’s hardware plan.
--disk KEY=ROLE[:POOL[/CLASS]] ROLE is compute, ceph-osd or unused.--link NAME=PURPOSE[,PURPOSE] purposes storage, overlay, provider (oob and mgmt are locked); --link NAME= clears them.--confirm KEY the typed wipe confirmation for a disk that holds data.What applies: unused -> compute registers the pool; unused -> ceph-osd wipes and marks the disk for the Ceph page; ceph-osd -> unused unmarks it while it is not an OSD; compute -> unused removes the pool when it holds no volumes. A system disk never changes. When any change is refused, nothing is applied and each refusal is printed with its reason.
Examples
Section titled “Examples”stratumctl admin nodes hardware-plan set node-1 --disk 0x5000c500a1b2c3d4=compute:fast/nvmestratumctl admin nodes hardware-plan set node-1 --disk /dev/disk/by-id/nvme-B=ceph-osd --confirm /dev/disk/by-id/nvme-Bstratumctl admin nodes hardware-plan set node-1 --link storage=storage,overlay --version 4stratumctl admin nodes hardware-plan set node-1 -f edit.json| Flag | Type | Default | Description |
|---|---|---|---|
--confirm |
stringArray | typed wipe confirmation: the key of a disk that holds data (repeatable) | |
--disk |
stringArray | KEY=ROLE[:POOL[/CLASS]] (repeatable) | |
-f, --file |
string | the edit as a JSON file (the PATCH body) | |
--link |
stringArray | NAME=PURPOSE[,PURPOSE] (repeatable) | |
--version |
int64 | 0 |
refuse the edit if the plan is no longer at this version |
stratumctl admin nodes join-code
Section titled “stratumctl admin nodes join-code”Join codes: what a new machine presents to join the cluster
stratumctl admin nodes join-code [flags]A new machine joins with two things: the cluster’s address and a short join code, XXXX-XXXX-XXX. Type both at stage 1 (“Join a cluster”), or put them in install.yaml (join.endpoint, join.code); the stratum-join:// URL carries both, for a QR code or a paste. The machine and the cluster prove the code to each other (a PAKE), so the code needs no CA fingerprint. A code is reusable until it expires or is revoked, and burns after 10 wrong attempts: the approval, not the code, is what lets a machine in. It is shown once, when it is created. While any code is live, every control-plane member opens the join listener (port 9444).
Subcommands
Section titled “Subcommands”stratumctl admin nodes join-code create: Create a join code (shown once)stratumctl admin nodes join-code list: List join codesstratumctl admin nodes join-code revoke: Revoke a join code: no further registration with it
stratumctl admin nodes join-code create
Section titled “stratumctl admin nodes join-code create”Create a join code (shown once)
stratumctl admin nodes join-code create [flags]Examples
Section titled “Examples”stratumctl admin nodes join-code createstratumctl admin nodes join-code create --ttl 24h --qrstratumctl admin nodes join-code create --address 192.0.2.11| Flag | Type | Default | Description |
|---|---|---|---|
--address |
string | where joiners reach the cluster: the API VIP (default) or a control-plane member’s address | |
--qr |
bool | false |
also print the URL as a QR code |
--ttl |
duration | 0s |
lifetime (default 4h, at most 168h) |
stratumctl admin nodes join-code list
Section titled “stratumctl admin nodes join-code list”List join codes
stratumctl admin nodes join-code list [flags]Examples
Section titled “Examples”stratumctl admin nodes join-code liststratumctl admin nodes join-code list --output jsonstratumctl admin nodes join-code revoke
Section titled “stratumctl admin nodes join-code revoke”Revoke a join code: no further registration with it
stratumctl admin nodes join-code revoke <code-id> [flags]Examples
Section titled “Examples”stratumctl admin nodes join-code revoke jc-4f7k2q9mstratumctl admin nodes joins
Section titled “stratumctl admin nodes joins”Machines that registered to join: approve, reject, follow
stratumctl admin nodes joins [flags]Each machine that registered with a join code waits here, with its hardware and a pairing code its console shows too: approve the machine whose console shows the code you see. The approval carries its assignment (role, rack, AZ, mgmt link, links, disks). Joins then run one at a time, in approval order, only while the cluster is green.
Subcommands
Section titled “Subcommands”stratumctl admin nodes joins approve: Approve a machine’s join with its assignmentstratumctl admin nodes joins export: A join’s assignment as a filejoins approve -ftakesstratumctl admin nodes joins get: A registration: hardware, assignment, steps, log tailstratumctl admin nodes joins list: List registrationsstratumctl admin nodes joins reject: Reject a machine’s join; it needs a reinstall to try againstratumctl admin nodes joins retry: Queue a failed join againstratumctl admin nodes joins watch: Follow a join’s progress until it is joined, rejected or expired
stratumctl admin nodes joins approve
Section titled “stratumctl admin nodes joins approve”Approve a machine’s join with its assignment
stratumctl admin nodes joins approve [<join-id>] [flags]Approve a machine’s join. Name it by its join id, or by –serial or –pairing (the code its console shows). The assignment comes from -f (YAML or JSON: a JoinAssignment, or {assignment, copyFrom}), from –from <node> (the assignment of a node that joined the same way: links whose NICs this machine has, disks matched by model and size, never addresses), and from the flags, which override both.
--disk KEY=ROLE[:POOL[/CLASS]] KEY a WWN or /dev/disk/by-id path; ROLE compute, ceph-osd or unused--confirm KEY the typed wipe confirmation for a disk that holds dataEvery joiner is hybrid (control plane, compute and Ceph together), the default; compute-only and storage-only nodes are not supported yet. A cluster takes joiners up to 5 control-plane nodes (the planned size is the install-time plan, not a cap); an approval past 5 is refused. The mgmt link is the NIC the machine registered from.
Examples
Section titled “Examples”stratumctl admin nodes joins approve nj-8w2k4m1p --rack r2 --disk /dev/disk/by-id/nvme-B=ceph-osdstratumctl admin nodes joins approve --serial SN0003 -f node-3.yamlstratumctl admin nodes joins approve --pairing 4F7-K2Q --from n-msst0002| Flag | Type | Default | Description |
|---|---|---|---|
--az |
string | availability zone | |
--confirm |
stringArray | typed wipe confirmation: the key of a disk that holds data (repeatable) | |
--disk |
stringArray | KEY=ROLE[:POOL[/CLASS]] (repeatable) | |
-f, --file |
string | the assignment, YAML or JSON | |
--from |
string | copy the assignment of this node id | |
--mgmt-address |
string | the mgmt address (a CIDR with –mgmt-gateway when it is new on that NIC) | |
--mgmt-gateway |
string | the mgmt gateway, for a new address | |
--mgmt-interface |
string | the mgmt NIC | |
--name |
string | display name (default the hostname) | |
--ntp |
stringArray | NTP server, when this node’s differ from the cluster’s (repeatable) | |
--pairing |
string | the pending machine whose console shows this pairing code | |
--rack |
string | the topology.rack label | |
--role |
string | hybrid (the only role supported) | |
--serial |
string | the pending machine with this system serial |
stratumctl admin nodes joins export
Section titled “stratumctl admin nodes joins export”A join’s assignment as a file joins approve -f takes
stratumctl admin nodes joins export <join-id> [flags]Print the assignment an approval gave a machine (role, rack, AZ, mgmt link, links, disks), without the keys the founder adds to the record (copiedFrom, copyNotes, a link’s addressesAllocated). Keep it to approve the same machine again after a rebuild:
stratumctl admin nodes joins export <join-id> > assignment.yamlstratumctl admin nodes joins approve --serial S -f assignment.yamlYAML by default; –output json prints JSON. A join that has no assignment yet (pending, rejected) has nothing to export.
Examples
Section titled “Examples”stratumctl admin nodes joins export nj-8w2k4m1p --output jsonstratumctl admin nodes joins approve --serial SN0002 -f node-2.yamlstratumctl admin nodes joins get
Section titled “stratumctl admin nodes joins get”A registration: hardware, assignment, steps, log tail
stratumctl admin nodes joins get <join-id> [flags]Examples
Section titled “Examples”stratumctl admin nodes joins get nj-8w2k4m1pstratumctl admin nodes joins get nj-8w2k4m1p --output jsonstratumctl admin nodes joins list
Section titled “stratumctl admin nodes joins list”List registrations
stratumctl admin nodes joins list [flags]Examples
Section titled “Examples”stratumctl admin nodes joins liststratumctl admin nodes joins reject
Section titled “stratumctl admin nodes joins reject”Reject a machine’s join; it needs a reinstall to try again
stratumctl admin nodes joins reject <join-id> [flags]Examples
Section titled “Examples”stratumctl admin nodes joins reject nj-8w2k4m1p --reason "not ours"| Flag | Type | Default | Description |
|---|---|---|---|
--reason |
string | why (shown on the machine’s console) |
stratumctl admin nodes joins retry
Section titled “stratumctl admin nodes joins retry”Queue a failed join again
stratumctl admin nodes joins retry <join-id> [flags]Examples
Section titled “Examples”stratumctl admin nodes joins retry nj-8w2k4m1pstratumctl admin nodes joins watch
Section titled “stratumctl admin nodes joins watch”Follow a join’s progress until it is joined, rejected or expired
stratumctl admin nodes joins watch <join-id> [flags]Examples
Section titled “Examples”stratumctl admin nodes joins watch nj-8w2k4m1p