rescriptum · an answer written for this machine
EN
On this page

Formats and endpoint aliases

Three tables. The narrative version is in one document per operating system.

Document extensions

The allowlist of extensions rescriptum will pick up from a store. Anything else is ignored — txt is deliberately not on the list, so a stray notes file next to your answers never becomes a candidate.

ExtensionFamilyLayeringContent-Type
tomlTOMLstructural mergetext/plain; charset=utf-8
yaml, ymlYAMLstructural mergetext/yaml; charset=utf-8
json, ignJSONstructural mergeapplication/json
xml, autoyast, unattendXMLstructural merge, by elementapplication/xml; charset=utf-8
ks, cfg, preseed, seed, ipxetextconcatenation in layer ordertext/plain; charset=utf-8

The family is what the log line’s format= field reports, so ks and preseed both appear as format=text. The extension is what an endpoint filters on, and what check needs in order to pick the right validator.

Endpoint aliases

A path segment naming one of these restricts the answer to documents with the listed extensions. Any segment of the path may name it, so /rhel/ks, /ks and /provision/rhel/node.cfg all restrict to kickstart.

SegmentServesTypical use
proxmox, pve, toml.tomlProxmox VE
debian, preseed.preseed, .seedDebian preseed
rhel, centos, fedora, alma, rocky, kickstart, ks.kskickstart
ubuntu, autoinstall, cloudinit, nocloud, yaml, yml.yaml, .ymlUbuntu autoinstall, cloud-init
flatcar, coreos, ignition, ign.ign, .jsonIgnition
suse, opensuse, autoyast.autoyast, .xmlAutoYaST
windows, unattend.unattend, .xmlWindows unattend.xml
json.json, .ign
xml.xml
cfg.cfg
ipxe.ipxe

A segment naming none of these constrains nothing, which is why /answer keeps working exactly as it always has.

Two traps in this table

  • Filtering is on the extension, not the family. .ks and .preseed are both text documents; filtering by family would let a preseed answer /rhel/ks.
  • seed is deliberately not an alias. s=http://server/seed/ is an ordinary NoCloud seed URL, and it serves YAML. An alias has to be specific enough that nobody reaches it by accident. (The .seed extension still exists, and /debian/ serves it.)

Control keys, per format

Stripped before the answer is sent.

FormatSpelling
TOMLtop-level extends = "base", members = […], [match] table
YAMLtop-level extends:, members:, match:
JSONtop-level "extends", "members", "match"
XML<answer-meta extends="base"><member>…</member><match k="v" /></answer-meta>
Text# answer: extends <name> · # answer: member a, b · # answer: match k=v k2=v2

Text directives also accept // as the comment marker. match takes space-separated key=pattern pairs; member a comma-separated list. Ordinary comments in a text document are served — only # answer: lines are removed.

Merge semantics

Structural formatsText formats
Maps / objects / elementsmerge recursively
Scalarshigher layer replaces
Arrays / listsreplace, never append
Whole documentconcatenated in layer order

XML pairs siblings by element name plus a discriminating attribute — name, id, key, alias, pass — and honours config:type="list". Declarations, doctypes, namespaces and attributes survive a merge; original indentation and comment placement do not.

Validators check can call

FormatToolInvoked as
tomlproxmox-auto-install-assistantvalidate-answer <file>
xml, autoyast, unattendxmllint--noout <file>
ksksvalidator<file>
everything elsenone exists

A tool that is not on PATH is reported once as a note, never as a failure.

Updated Edit this page