5.3 KiB
Hostnamen vergibt CluPilot, nicht der Betreiber
Stand: Entwurf, 1. August 2026
Auslöser: gemessen auf pve-fns-1, dem ersten echten Host
Das Problem, an dem es aufgefallen ist
Der Betreiber legte einen Host als pve-fns-1 an. Die Konsole zeigte diesen
Namen, PrepareBaseSystem setzte ihn als Hostnamen, und Proxmox übernahm ihn
als Node-Namen.
RegisterHostDns trug aber etwas anderes ein:
10.66.0.100 fsn-01.node.clupilot.com
HostTakeoverCommand::fqdnFor() bildet den Namen systematisch aus
Rechenzentrum und laufender Nummer — unabhängig davon, was eingegeben wurde.
Damit führt CluPilot zwei Namen für dieselbe Maschine, und nur einer davon löst auf. Der Betreiber rief den Namen auf, den er selbst vergeben hatte, und stand vor einer Seite, die nicht lädt. Nirgendwo in der Oberfläche stand, dass es einen zweiten gibt.
Das ist keine Anzeigeschwäche. Es sind zwei Wahrheiten über dieselbe Sache, und die zweite fällt erst auf, wenn jemand sie braucht.
Die Entscheidung
Der systematische Name gewinnt. Das Namensfeld entfällt.
Der Betreiber wählt ein Rechenzentrum und trägt IP und Root-Passwort ein. Den Namen vergibt CluPilot:
<rz>-<nn> fsn-03
<rz>-<nn>.node.<zone> fsn-03.node.clupilot.com
Ein Name, an einer Stelle gebildet, von Maschine, Proxmox-Node, DNS und Konsole gleichermaßen benutzt.
Begründung des Besitzers, wörtlich: „das wäre sogar besser wie pve-fns-1 was ich eingetragen habe." Ein selbst getippter Name ist eine Fehlerquelle ohne Gegenwert — er muss eindeutig sein, DNS-tauglich, und er sagt nichts, was das Rechenzentrum nicht schon sagt.
Wie die Nummer vergeben wird
Fortlaufend je Rechenzentrum, niemals wiederverwendet.
Eine gelöschte fsn-02 steht danach noch in Protokollen, in Sicherungen, in
der Überwachungshistorie und im DNS-Zwischenspeicher. Bekäme die nächste
Maschine denselben Namen, teilten sich zwei verschiedene Server einen Namen
über die Zeit — und niemand könnte im Nachhinein sagen, welche gemeint war.
MAX(nummer) + 1 reicht dafür nicht, weil PurgeHost die Zeile löscht und
das Maximum damit zurückfällt. Der Zähler muss die Löschung überleben:
- Spalte
next_host_numberandatacenters, Vorgabe 1 - Vergabe erhöht sie, Löschen eines Hosts fasst sie nicht an
- Vergabe innerhalb der bestehenden Transaktion in
StartHostOnboarding, mit Sperre auf die Rechenzentrums-Zeile (lockForUpdate) - Zusätzlich ein eindeutiger Index auf
hosts.name— ein Riegel, kein Ersatz
Zweistellig aufgefüllt (fsn-03), ab hundert wächst es natürlich weiter
(fsn-100). Kein Sonderfall nötig.
Was sich ändert
| Ort | Heute | Danach |
|---|---|---|
Admin\HostCreate |
Feld „Name", Pflicht | entfällt; die Seite zeigt, welcher Name vergeben wird |
StartHostOnboarding |
nimmt name entgegen |
vergibt ihn selbst aus dem Rechenzentrum |
HostTakeoverCommand::fqdnFor() |
bildet <rz>-<nn> eigenständig |
$host->name.'.node.'.$zone — eine Zeile |
RegisterHostDns |
eigene Ableitung | benutzt dieselbe Quelle |
PrepareBaseSystem |
hostnamectl set-hostname $host->name |
unverändert — der Name ist jetzt der richtige |
datacenters |
— | Spalte next_host_number |
hosts |
name frei |
eindeutiger Index auf name |
PrepareBaseSystem bleibt bewusst unangetastet: Es setzte immer schon
$host->name. Sobald der Name systematisch ist, stimmen Maschine, Node und DNS
von selbst überein. Das ist der Beweis, dass die Reparatur an der richtigen
Stelle sitzt — sie entfernt eine zweite Quelle, statt eine dritte einzuführen.
Die Anlegen-Seite sagt den Namen vorher
Ein Name, der ohne Ankündigung entsteht, ist eine Überraschung. Die Seite zeigt ihn, sobald ein Rechenzentrum gewählt ist:
Dieser Host wird fsn-03 heißen und unter
fsn-03.node.clupilot.comerreichbar sein.
Vergeben wird er trotzdem erst beim Speichern — die Vorschau liest den Zähler,
sie verbraucht ihn nicht. Zwei gleichzeitig geöffnete Formulare zeigen also
beide fsn-03, und der zweite bekommt beim Speichern fsn-04. Das ist
richtig so und darf nicht durch eine Reservierung „behoben" werden: ein
abgebrochenes Formular hinterließe sonst eine Lücke im Zähler, die niemand
wieder auffüllt.
Der bestehende Host
pve-fns-1 läuft, sein Proxmox-Node heißt so, und ein Node lässt sich
nachträglich nur mühsam umbenennen.
Die Zeile wird auf fsn-01 umbenannt, die Maschine nicht. Konsole und DNS
stimmen damit überein; dass der Proxmox-Node anders heißt, ist sichtbar und
schadet nicht — die Host-Detailseite führt „Node" ohnehin als eigenes Feld.
datacenters.next_host_number für fsn startet entsprechend bei 2.
Abnahme
- Host in
fsnanlegen ohne Namensfeld → heißtfsn-02, DNS löst auf - Zweiten anlegen →
fsn-03, keine Kollision fsn-02entfernen, dritten anlegen →fsn-04, nichtfsn-02- Auf der Maschine:
hostnamemeldet denselben Namen wie das DNS - Zwei Formulare gleichzeitig: beide zeigen
fsn-05, gespeichert wirdfsn-05undfsn-06
Punkt 3 ist der, der die Sorgfalt trägt. Er scheitert bei jeder Umsetzung, die
MAX(nummer) + 1 rechnet.
Reihenfolge
Nach vmbr0, vor der vollständigen Abnahmeinstallation. Der Besitzer will die
Namensvergabe im selben Durchlauf prüfen, in dem eine frische Maschine ohne
einen Handgriff auf active geht.