Releases: z29k/rescriptum
Release list
rescriptum v0.3.0
What's Changed
- feat: the whole boot chain, and a directory per identity by @wamxx in #2
- feat(config): a TOML configuration file, for where a person edits it by hand by @wamxx in #3
Full Changelog: v0.2.0...v0.3.0
rescriptum v0.2.0
What's Changed
- feat(packaging): a Synology DSM 7 package, the ARMv7 target it forced, and a desktop application by @wamxx in #1
New Contributors
Full Changelog: v0.1.0...v0.2.0
rescriptum v0.1.0
First public release.
rescriptum is an HTTP server that compiles and renders the configuration files for
automated OS installs. Every machine boots the same image and asks the same server, so the
address inside the image cannot be what distinguishes them. What distinguishes them is what
they say when they ask: a MAC address, a serial number, a hardware inventory. rescriptum
reads that, picks the documents that apply, merges them, and returns one configuration for
that one machine.
It answers both shapes of request, on any path. Proxmox VE 8.2 and later POST a JSON
inventory of the hardware they found and expect the answer in the response body; every
other installer GETs with its identity in the query string, because iPXE substitutes it
into the URL before fetching.
Which file to download
| Archive | For |
|---|---|
armv7-unknown-linux-musleabihf |
Synology DS416j and other ARMv7 NAS |
aarch64-unknown-linux-musl |
modern ARM NAS, Raspberry Pi |
x86_64-unknown-linux-musl |
most Linux hosts |
aarch64-apple-darwin, x86_64-apple-darwin |
local development |
The Linux builds are static musl binaries: no runtime, no interpreter, no container. The
ARMv7 one is 2.4 MB.
Verify what you downloaded
This runs as root on the hardware it provisions, so check the archive rather than trusting
it. Each one ships with its SHA-256 sum:
$ shasum -a 256 -c rescriptum-0.1.0-x86_64-unknown-linux-musl.tar.gz.sha256
rescriptum-0.1.0-x86_64-unknown-linux-musl.tar.gz: OKGetting started
$ RESCRIPTUM_ANSWERS_DIR=/srv/answers ./rescriptum
$ curl http://localhost:8000/health
OKThen point what you are installing at its own URL — one server answers all of them. The
quick start goes from an empty
directory to a machine receiving its own configuration, and
preparing installer media has the URL to
bake into each ISO, per operating system.
What is in this release
- Thirteen document formats. Proxmox
answer.toml, Ubuntu autoinstall, kickstart,
preseed, Ignition, AutoYaST, Windowsunattend.xml, iPXE scripts. The endpoint declares
the format, the document carries it as its extension, and only documents of that format
may answer — so one machine can be a Proxmox node and a Debian node at once. - Answers that compose. A group file for what a rack shares, a machine file carrying
only its difference,extendschains between groups. Maps merge, arrays replace, the
machine always wins. - Selection by identity or by selector. A document named after the machine, a group
listing it inmembers, or a[match]block claiming it for what it is. Deterministic:
naming beats matching, more criteria beat fewer, ties break on sorted name. - Templating.
fqdn = "node-{{ serial }}.example.com", filled from the request. A
missing fact is an error, never an empty string. - Two stores. A directory of documents, or SQLite — the same behaviour either way, and a
conformance suite runs every case against both.importandexportmove between them. - An admin API over SQLite, on its own listener, where a write that would break the
answer set rolls itself back instead. renderandcheck. A merged answer is a document nobody ever wrote, sorender
prints what a given machine would receive andcheckrenders everything and reports what
breaks, calling the installer's own validator where one is on PATH.
Documentation
https://z29k.github.io/rescriptum/ — in English and
French, with a
development space covering the constraints,
the internals, and the traps.
Full Changelog: https://github.com/z29k/rescriptum/commits/v0.1.0