VM ID oder Name in VM abfragen

Hallo Kollegen,

ich hab die Frage schon öfter gesehen aber keine Antworten: Gibt es eine Möglichkeit, den Namen (oder die ID) einer (Linux!) VM innerhalb der VM selbst via Guest-Agent abzufragen? Ziel ist, das Deployment soweit zu automatisieren, dass man nur noch das Template klonen muss und die VM alles selber macht. Aktuell hab ich das Template soweit, dass die Maschine nach dem booten ihre SSH-Keys automatisch neu generiert und die machine-id setzt. Hostname und IP-Adresse müssen derzeit noch manuell mit einem Skript nach der ersten Anmeldung gesetzt werden, das hätte ich auch gerne ohne Interaktion.

Grüsse
Michael

.
 
I've seen this question before but no answers: Is there a way to query the name (or ID) of a (Linux!) VM within the VM itself via a guest agent? The goal is to automate the deployment to such an extent that you only have to clone the template and the VM does everything itself. Currently I have the template so far that the machine automatically regenerates its SSH keys after booting and sets the machine-id. The host name and IP address still have to be set manually with a script after the first login, which I would also like to have without interaction.

Translated with DeepL.com (free version)
Use DHCP or something else based on the Ethernet MAC address.
 
  • Like
Reactions: dj0Nz
Wenn du es gleich automatisierst, setze doch einfach die VMID direkt in die SMBIOS-Information in die Serial ein. Wir machen das und das ist die einfachste Methode, die man sich vorstellen kann, wenn man zu 100% auf Automatisierung setzt. In der VM kannst du dann via dmidecode die Infos abfragen.

Code:
$ dmidecode --string system-serial-number
2000
 
  • Like
Reactions: dj0Nz and fba
DHCP ist für IP und Hostname ein übliches Mittel.

Ansonsten, ich bin nicht so der Fan von Skripten in der VM. Es gibt besserer Mittel. Mit Cloud-Init lässt sich vieles gleich zu Beginn passend ausrollen und spätere Änderungen sind nur Anpassungen an YAML-Dateien. Und/Oder Tools wie Ansible/Terraform usw. einsetzen. Dann muss bei Änderungen, z. B. OS-Updates, nicht das Template der VM angepasst werden, sondern nur ein wenig Code.
Just my 2 cents :)
 
Wenn du es gleich automatisierst, setze doch einfach die VMID direkt in die SMBIOS-Information in die Serial ein. Wir machen das und das ist die einfachste Methode, die man sich vorstellen kann, wenn man zu 100% auf Automatisierung setzt. In der VM kannst du dann via dmidecode die Infos abfragen.

Code:
$ dmidecode --string system-serial-number
2000
Klasse. Genau nach sowas hab ich gesucht.
 
  • Like
Reactions: LnxBil
DHCP ist für IP und Hostname ein übliches Mittel.

Ansonsten, ich bin nicht so der Fan von Skripten in der VM. Es gibt besserer Mittel. Mit Cloud-Init lässt sich vieles gleich zu Beginn passend ausrollen und spätere Änderungen sind nur Anpassungen an YAML-Dateien. Und/Oder Tools wie Ansible/Terraform usw. einsetzen. Dann muss bei Änderungen, z. B. OS-Updates, nicht das Template der VM angepasst werden, sondern nur ein wenig Code.
Just my 2 cents :)
Da bin ich ganz bei Dir, Skripte in der VM fühlen sich eher nach basteln an. Ich werde denke ich das Klonen skripten und in das Deployment-Skript einen Teil einbauen, der mir die Host Reservation in Kea und die DNS Records anlegt.

@LnxBill: Die UUID kann man in der Maschine abfragen ohne sie explizit setzen zu müssen, danke für den Tipp mit dmidecode! Von der UUID auf die VMID zu kommen (via API /nodes/$NODE/qemu/$VMID/config) ging dann auch einfach aber ich glaub ich gehe eher den DHCP-Weg.
 
  • Like
Reactions: fba
ich glaub ich gehe eher den DHCP-Weg.
Ich habe nicht so ganz verstanden wie das ein gangbarer Weg sein soll in der VM an die ID der Maschine zu kommen. Willst du Namen ala proxmox-ve-vm-id-1000 haben oder wie muss ich mir das vorstellen?

Die UUID kann man in der Maschine abfragen ohne sie explizit setzen zu müssen
Klar, aber dann weißt du ja in der VM immer noch nicht wie der Name oder die ID ist, das musst du nochmal extern abgleichen. Die Serial sagt dir dann genau wie die ID ist, also ohne externe Quellen / Referenzen.
 
Ich habe nicht so ganz verstanden wie das ein gangbarer Weg sein soll in der VM an die ID der Maschine zu kommen. Willst du Namen ala proxmox-ve-vm-id-1000 haben oder wie muss ich mir das vorstellen?
Ich verstand es so, dass es darum geht, automatisiert IP und Hostnamen zu setzen. Dafür gibt es viele Wege, üblich ist es, das eben nicht wie ursprünglich beschrieben per Skript innerhalb der VM zu machen, sondern extern via DHCP zu steuern. :)
 
Ich verstand es so, dass es darum geht, automatisiert IP und Hostnamen zu setzen. Dafür gibt es viele Wege, üblich ist es, das eben nicht wie ursprünglich beschrieben per Skript innerhalb der VM zu machen, sondern extern via DHCP zu steuern. :)
Gerade den Text nochmal gelesen und ja, das stand weiter unten. Dafür gibt es seit letztem Jahrtausend andere Wege wie du schon richtig beschrieben hast, die haben aber nix mit der UUID, dem Namen oder der ID in PVE zu tun.

Die ID in der VM zu kennen haben aber auch andere Vorteile, denn dann muss man nicht noch manuell den Namen in PVE suchen, den es mehrfach geben kann, sondern kann direkt zur VM-ID springen.
 
Gerade den Text nochmal gelesen und ja, das stand weiter unten. Dafür gibt es seit letztem Jahrtausend andere Wege wie du schon richtig beschrieben hast, die haben aber nix mit der UUID, dem Namen oder der ID in PVE zu tun.

Die ID in der VM zu kennen haben aber auch andere Vorteile, denn dann muss man nicht noch manuell den Namen in PVE suchen, den es mehrfach geben kann, sondern kann direkt zur VM-ID springen.
> haben aber nix mit der UUID, dem Namen oder der ID in PVE zu tun.

Völlig korrekt. Ich hab mich nur in der Idee verirrt, dass ja die Oneshot-Unit, die beim ersten booten die Host Keys ändert, auch gleich den Hostnamen (= VM Name) setzen könnte, wenn man den "einfach" irgendwo auslesen könnte. Das lasse ich dann aber mal. Danke euch!
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!