Unattended install
Stage 1 reads its answers from install.yaml; with a node.yaml beside it, stage
2 installs by itself on the first boot. The only manual step left is removing
the install medium and pressing enter on the Installed screen: stage 1 does
not reboot by itself unless stratum.install.reboot=yes is on the kernel
command line (see the countdown).
Where the installer looks
Section titled “Where the installer looks”In this order:
- The kernel argument
stratum.install=: anhttp://orhttps://URL, or a path on the live system. At the boot menu, press e, append it to thelinuxline, and boot with ctrl+x. A URL that does not answer yet (no network so far) is retried for up to 90 seconds. - A partition labelled
STRATUMwithinstall.yamlat its root, for example on a second USB stick (mkfs.vfat -n STRATUM /dev/sdY1).
node.yaml is read from the same place: the same directory of the same server
(give each node a directory of its own), or the root of the same partition.
install.yaml holds the root password hash and the wipe confirmation, and a
plain http:// fetch can be altered on the way. Pin the file’s SHA-256 with
stratum.install.sha256=<hex> on the kernel line, and node.yaml’s with
stratum.install.node.sha256=<hex>. A file that does not match is not used and
the install is interactive.
install.yaml
Section titled “install.yaml”disks: - /dev/disk/by-id/nvme-EXAMPLE_SSD_1TB_SN0001 - /dev/disk/by-id/nvme-EXAMPLE_SSD_1TB_SN0002 # a second disk makes a mirroros_disk_layout: compute-tail # or whole-diskstratum_size_gib: 211 # compute-tail onlynic: name: enp1s0 mode: static # or dhcp address: 192.0.2.10/24 gateway: 192.0.2.1 dns: [192.0.2.1]hostname: node-1.example.comroot: password_hash: "$y$j9T$..." # mkpasswd -m yescrypt ssh_authorized_keys: - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... admin@workstationwipe_confirm: # OS disks that hold data and may be wiped - /dev/disk/by-id/nvme-EXAMPLE_SSD_1TB_SN0001 - /dev/disk/by-id/nvme-EXAMPLE_SSD_1TB_SN0002wipe_other_disks: true # also wipe every other disk that holds datakernel_args: - console=ttyS0,115200| Key | Rules |
|---|---|
kind |
single-node (default), new-cluster or join-cluster; see Unattended cluster install. |
disks |
One or two /dev/disk/by-id/ paths, whole disks. Required unless disk_select. |
disk_select |
Instead of disks, for one file on many machines: count (1 or 2), min_size_gib, max_size_gib, type (nvme, ssd, hdd, any). It picks from blank disks only. |
os_disk_layout |
compute-tail (default) or whole-disk. |
stratum_size_gib |
At least 108; default 191, or what the smaller disk takes with its 20 GiB tail. Not with whole-disk. |
nic |
name (or match: mac, driver, link) and mode required; address (CIDR) required for static; gateway and up to 3 dns optional. |
hostname |
Lower case; letters, digits, inner hyphens, dots between labels, at most 64 characters. May hold {mac}, {mac6}, {mac4} and {nic}, taken from the chosen NIC. |
root |
password_hash (a crypt hash, never a plain password), ssh_authorized_keys, or both. |
wipe_confirm |
Every OS disk that holds data must be listed, or the install is refused. Not with disk_select. |
wipe_extra |
Disks to wipe but not use, such as the other half of an old mirror. |
wipe_other_disks |
true wipes every other disk that holds data and is not the install medium, mounted, removable or USB, read-only, a multipath path or without a hardware ID. The key is the confirmation. Without it only the OS disks are wiped. |
kernel_args |
Extra kernel arguments, one per entry. |
The file is parsed strictly: an unknown key is an error. Check it from the live system’s shell first:
stratum-installer stage1 plan --config /path/to/install.yamlWhat happens
Section titled “What happens”- A valid file the machine can take shows its plan and installs after a 10-second countdown. Any key stops the countdown and opens the interactive installer with the answers filled in; every disk holding data must then be confirmed by name on the review screen.
stratum.install.auto=0on the kernel command line turns the countdown off.stratum.install.reboot=yes(or=<seconds>, 1 to 3600) makes a finished install reboot by itself after a countdown that any key but enter stops. Use it only when the machine does not boot the install medium first.- A file that does not validate, or that the machine refuses, is never installed: its answers are filled in and the problems are shown.
- With a
node.yamlbeside it, the review asks whether it goes with the install. A countdown that runs out always takes it.
On the first boot, the install service takes node.yaml once:
| The file is | Then |
|---|---|
| Valid | The install starts at once. The console shows each step; the code and URL are still shown, so the install can be followed with stratum-installer watch or in the browser. |
| Invalid | Nothing starts. The console lists the errors by key, and the installer waits as usual: fix the draft in the browser or with stratum-installer apply -f node.yaml. |
| Blocked (the release images did not load) | It waits and starts by itself once they load. |
The file is removed from the node once taken, and is never installed twice.
node.yaml can hold credentials: keep the medium’s copy safe.
Stage 1 from the shell
Section titled “Stage 1 from the shell”The live system’s shell (ctrl+c in the installer) has the same engine:
stratum-installer stage1 discover # disks and NICs, as JSONstratum-installer stage1 plan --config install.yamlstratum-install --config install.yaml --yes # install with no questions and no countdownKeep the files for a rebuild
Section titled “Keep the files for a rebuild”stratum-installer stage1 export prints an install.yaml from the install record
a node keeps, so a machine can be reinstalled later from files. For a cluster, see
Rebuild the cluster from files.
