rescriptum · an answer written for this machine
FR
Sur cette page

Servir sa première réponse

Cinq minutes, un terminal, aucun installateur nécessaire. Tout ici est testable hors ligne : rescriptum render résout une réponse exactement comme le ferait le serveur, donc vous pouvez avoir la bonne réponse avant qu’aucune machine ne démarre.

1. Un répertoire et un document

$ mkdir -p answers/groups/rack-a

Un répertoire par identité. Un répertoire à la racine est une machine, nommé d’après elle ; groups/ contient ceux qui sont partagés. Dans l’un comme dans l’autre, l’extension nomme le format et le reste du nom de fichier n’est qu’une étiquette. Commencez par un groupe, puisque c’est la forme que prend presque tout déploiement réel — une baie de machines d’accord sur tout sauf sur les disques qu’elles ont :

# answers/groups/rack-a/proxmox.toml
members = ["98:fa:9b:50:d8:10", "98:fa:9b:50:d8:11"]

[global]
keyboard = "fr"
country = "fr"
timezone = "Europe/Paris"
root-password-hashed = "$6$rounds=656000$REPLACE$ME"

[network]
source = "from-dhcp"

[disk-setup]
filesystem = "zfs"
zfs.raid = "raid1"
disk-list = ["sda", "sdb"]

members liste les machines pour lesquelles ce groupe répond. Le style de séparateur n’a pas d’importance — 98:fa:9b:50:d8:10, 98-FA-9B-50-D8-10 et 98fa9b50d810 sont une seule MAC, des deux côtés de la comparaison. members est une clé de rescriptum, pas de Proxmox, et elle est retirée de ce que l’installateur reçoit.

2. Voir ce qu’une machine recevrait

$ RESCRIPTUM_ANSWERS_DIR=answers rescriptum render 98:fa:9b:50:d8:11
# format=toml group=rack-a

[global]
keyboard = "fr"
country = "fr"
timezone = "Europe/Paris"
root-password-hashed = "$6$rounds=656000$REPLACE$ME"

[network]
source = "from-dhcp"

[disk-setup]
filesystem = "zfs"
zfs.raid = "raid1"
disk-list = ["sda", "sdb"]

La première ligne part sur stderr et dit comment la réponse a été obtenue — la famille de format, quel document machine a matché, quel groupe s’est appliqué. Le document lui-même part sur stdout, donc render … > answer.toml ne vous donne que le document.

3. Une machine qui diffère

Le second nœud de la baie a quatre disques. Il reçoit un répertoire nommé d’après sa MAC, contenant un document avec seulement la différence :

# answers/98-fa-9b-50-d8-10/proxmox.toml
[global]
fqdn = "node01.example.com"

[disk-setup]
zfs.raid = "raid10"
disk-list = ["sda", "sdb", "sdc", "sdd"]
$ RESCRIPTUM_ANSWERS_DIR=answers rescriptum render 98:fa:9b:50:d8:10
# format=toml machine=98-fa-9b-50-d8-10 group=rack-a

[global]
keyboard = "fr"
country = "fr"
timezone = "Europe/Paris"
root-password-hashed = "$6$rounds=656000$REPLACE$ME"
fqdn = "node01.example.com"

[network]
source = "from-dhcp"

[disk-setup]
filesystem = "zfs"
zfs.raid = "raid10"
disk-list = ["sda", "sdb", "sdc", "sdd"]

Le groupe d’abord, le document propre à la machine par-dessus, et la machine a gagné partout où les deux étaient en désaccord. Les tables ont fusionné clé par clé ; disk-list a été remplacée, pas concaténée — une liste qui ne pourrait que grandir ne pourrait jamais être raccourcie depuis une couche supérieure.

4. Vérifier l’ensemble

$ RESCRIPTUM_ANSWERS_DIR=answers rescriptum check
checking files:answers
  1 group(s), 1 machine document(s)
  note: toml answers not schema-checked — proxmox-auto-install-assistant is not on PATH
  ok — everything renders

check rend chaque machine et chaque membre de groupe, et signale tout ce qui casse : un document qui ne parse pas, un groupe qui en étend un inexistant, un placeholder que rien ne peut remplir. Là où le validateur de l’installateur est dans le PATH, il le lance aussi, et dit quels formats il n’a pas pu vérifier.

C’est la commande à mettre en CI si vos réponses vivent dans git.

5. Les servir pour de vrai

$ RESCRIPTUM_ANSWERS_DIR=answers rescriptum
2026-08-24T08:43:36Z - rescriptum 0.1.0 listening on 0.0.0.0:8000 — store=files:answers workers=10 max_conn=2048 timeout=10s

Dans un autre terminal, imitez ce qu’envoie l’installateur Proxmox :

$ curl -s -X POST http://localhost:8000/answer \
    -d '{"network_interfaces":[{"mac":"98:fa:9b:50:d8:10","link":"up"}]}'

et regardez le serveur dire ce qu’il a fait :

2026-08-24T08:43:37Z 127.0.0.1:61721 POST /answer body=102 200 format=toml machine=98fa9b50d810 group=rack-a bytes=431

Cette ligne est tout le diagnostic disponible quand un déploiement dérape : qui a demandé, quelle taille faisait son corps, ce qu’il a reçu, et à partir de quoi c’était construit.

Les nouveaux documents sont pris en compte au fur et à mesure — pas de redémarrage, pas de signal de rechargement. L’apparition ou la disparition du répertoire entier d’une machine est vue immédiatement ; un document ajouté ou modifié à l’intérieur de l’un d’eux est pris en compte en moins d’une seconde.

À lire ensuite

Mis à jour le Modifier cette page