- Rust 100%
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. |
||
|---|---|---|
| .idea | ||
| crates/installadm | ||
| proto | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| README.md | ||
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 theClaimRPC against amachinedon a target machine, using either a one-time password printed on/dev/msglogor a pre-shared payload.installadm install— streams anInstallRPC: pushes a parsedMachineConfig(KDL) and watches the streamed install progress.installadm system-info— invokesGetSystemInfoto inspect a target's disks, NICs, and SMBIOS.installadm usb— assembles a USB stick: writes a defaultmachined.jsonconfig (matchingMachineConfigshape) 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.
Related
- machined — the install-time daemon installadm talks to
- installer-ui — web UI alternative for the same gRPC API
- sysconfig — runtime provisioner for the installed BE
- refraction-forger — image builder
License
MPL-2.0.