Write node.yaml and start the install.
curl --request POST \ --url 'https://192.0.2.10:9443/v1/installer/install?unsafeRerun=false' \ --header 'Authorization: <Authorization>' \ --header 'If-Match: "3"'Writes the draft to /etc/stratum/node.yaml and starts
stratum-bootstrap firstboot --dev-target --config /etc/stratum/node.yaml as a supervised job in its own systemd unit,
so it survives a disconnected client and a restart of this service.
409 while an install runs or after one succeeded. 422 when the draft
does not validate.
A failed install can be started again when its verdict says
rerunSafe: firstboot is idempotent for a single node,
and for a cluster’s first node (hyperconverged-init) only in the
steps whose re-run is known to converge (the verdict’s
rerunReason says which). After a failure in a step that is not
known to be safe, the start is refused with 409 RERUN_UNSAFE,
naming the step and what to do (recovery: download the
diagnostics, then reinstall the node from the ISO). unsafeRerun
starts it anyway, for an operator who accepts that disks and the
cluster may be half-built. When only the readiness wait failed,
POST /v1/installer/install/recheck-readiness re-runs just that.
If-Match is the revision of the draft the caller reviewed: the install starts only if the draft is still that
revision, and is refused with 409 DRAFT_CHANGED when the CLI or
another tab stored it again since. Send it from every client that
shows the draft before it starts the install. Absent: the current
draft is installed, whatever its revision.
A retry after a failure is a start like any other: the
draft is still editable after a failure, so a retry that sends the
revision it last showed installs only that draft. If-Match is
not required (a missing header is tolerated, not refused with 428):
the CLI, scripts and an unattended install start without one, and a
retry installs the draft that failed unless it was stored again in
between, which only a client that sends If-Match can tell.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Example
"3"The revision of the draft the request was built on. When it is not
the draft’s current one the request is refused with 409
DRAFT_CHANGED. Absent: on PUT the draft is replaced whatever it
is, and on POST /install the current draft is installed.
Query Parameters
Section titled “Query Parameters”Start the install again although the last attempt failed in a
step whose re-run is not known to be safe (rerunSafe false).
Without it that start is refused with 409 RERUN_UNSAFE.
Responses
Section titled “Responses”The install started.
object
configuring until an install starts; installing while one runs;
done after one succeeded; failed after the latest one failed.
Example
{ "phase": "configuring"}No install code, or the wrong one.
RFC 7807 problem details, the control plane’s shape.
object
Field errors, for INVALID_CONFIG.
object
The structured field (network.floatingIpCidrs[1]); empty for the whole config. For a raw YAML draft, the node.yaml key.
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "code": "example", "requestId": "example", "errors": [ { "field": "example", "message": "example" } ]}An install is running or has succeeded.
RFC 7807 problem details, the control plane’s shape.
object
Field errors, for INVALID_CONFIG.
object
The structured field (network.floatingIpCidrs[1]); empty for the whole config. For a raw YAML draft, the node.yaml key.
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "code": "example", "requestId": "example", "errors": [ { "field": "example", "message": "example" } ]}The draft config does not validate; errors lists why.
RFC 7807 problem details, the control plane’s shape.
object
Field errors, for INVALID_CONFIG.
object
The structured field (network.floatingIpCidrs[1]); empty for the whole config. For a raw YAML draft, the node.yaml key.
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "code": "example", "requestId": "example", "errors": [ { "field": "example", "message": "example" } ]}Too many wrong install codes; wait for Retry-After.
RFC 7807 problem details, the control plane’s shape.
object
Field errors, for INVALID_CONFIG.
object
The structured field (network.floatingIpCidrs[1]); empty for the whole config. For a raw YAML draft, the node.yaml key.
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "code": "example", "requestId": "example", "errors": [ { "field": "example", "message": "example" } ]}Headers
Section titled “Headers”Seconds until the next attempt is considered.
The installer failed to answer.
RFC 7807 problem details, the control plane’s shape.
object
Field errors, for INVALID_CONFIG.
object
The structured field (network.floatingIpCidrs[1]); empty for the whole config. For a raw YAML draft, the node.yaml key.
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "code": "example", "requestId": "example", "errors": [ { "field": "example", "message": "example" } ]}