No description
Find a file
Till Wegmueller 059a7b6592 deps: pull ociclient from its own repo, drop vendored copy
ociclient now lives at its own home:
  https://code.aopc.cloud/CloudNebulaProject/oci-client

Removed crates/ociclient/ and switched the path dep in
crates/installadm/Cargo.toml to a git dep on the new repo. The
workspace now contains only installadm.
2026-04-28 16:48:49 +02:00
.idea Initial installadm: operator CLI for the illumos installer 2026-04-28 16:24:37 +02:00
crates/installadm deps: pull ociclient from its own repo, drop vendored copy 2026-04-28 16:48:49 +02:00
proto Initial installadm: operator CLI for the illumos installer 2026-04-28 16:24:37 +02:00
.gitignore Initial installadm: operator CLI for the illumos installer 2026-04-28 16:24:37 +02:00
Cargo.lock deps: pull ociclient from its own repo, drop vendored copy 2026-04-28 16:48:49 +02:00
Cargo.toml deps: pull ociclient from its own repo, drop vendored copy 2026-04-28 16:48:49 +02:00
LICENSE Initial commit 2026-04-28 14:16:16 +00:00
README.md deps: pull ociclient from its own repo, drop vendored copy 2026-04-28 16:48:49 +02:00

installadm

Operator-side CLI for the illumos installer toolchain.

installadm is the off-target counterpart of machined: it builds and stages installer artifacts (USB media, machine configs), talks to running machined instances over gRPC to claim them and trigger installs, and pulls OS images from OCI registries.

Repository layout

Single-crate Cargo workspace with a snapshot of the machined.proto API contract:

crates/installadm/    the CLI (this README)
proto/machined.proto  snapshot of the machined gRPC API

The proto file is consumed at build time by tonic-build to generate a gRPC client. Sync it manually from https://code.aopc.cloud/CloudNebulaProject/machined when the API changes.

ociclient lives in its own repo at https://code.aopc.cloud/CloudNebulaProject/oci-client and is pulled in as a git dependency.

What it does

  • installadm config — manages a local state file of registered machines (server endpoint, claim tokens).
  • installadm claim — performs the Claim RPC against a machined on a target machine, using either a one-time password printed on /dev/msglog or a pre-shared payload.
  • installadm install — streams an Install RPC: pushes a parsed MachineConfig (KDL) and watches the streamed install progress.
  • installadm system-info — invokes GetSystemInfo to inspect a target's disks, NICs, and SMBIOS.
  • installadm usb — assembles a USB stick: writes a default machined.json config (matching MachineConfig shape) onto the stick so a fresh boot of the live image goes straight into an unattended install.

The build pipeline for installer images themselves lives elsewhere (see refraction-forger and the image/ subtree in the installer monorepo).

Building

cargo build --release

The binary is target/release/installadm.

Status

This is the v0.1 extraction of installadm from the installer monorepo. It still writes a JSON config matching the in-tree SysConfig shape (hostname, nameservers, interfaces); when machineconfig and the runtime sysconfig schema diverge further, the USB-config generator should switch to KDL.

License

MPL-2.0.