Hostname der VM ändert sich nicht

badsmoke

Member
Nov 12, 2020
14
0
6
33
Hallo

ich komme von dem service LXD und will jetzt auf proxmox umsteigen.

Bei lxd ist es so, dass so bald man eine vm/container kopiert sich automatisch auch der hostname anpasst. Gibt es sowas auch bei proxmox?

Ich hab auch schon ein Template erstellt und den qemu-guest-agent installiert, doch es scheint nicht zu funktionieren.

Ich benutze ubuntu-20.04 als guests.

Falls das bei proxmox nicht so einfach möglich ist, wie wird das dann bei anderen gelößt
Ich erstelle mir üblicherweise ein Standard Image bei dem alles wichtige eingerichtet und installiert ist und kopiere die nur.


mfg
 
Bei VMs (Qemu) wird nichts von PVE aus geändert sondern muss innerhalb des Gasts passieren. Du kannst dir noch Cloudinit anschauen ob du damit an dein Ziel kommst. Ansonsten gibt es auch noch diverse Configmanagement tools.

Bei LXC Containern wird der Hostname und das Netzwerk beim Erstellen angepasst und kann auch über die GUI verändert werden (hostname im DNS panel). Braucht aber mitunter einen Neustart des Containers.
 
hmm ok das ist sehr umständlich, das soll ja automatisch beim clonen der vm passieren, wenn man das alles über scripte regelt kann ich mir die gui fast sparen.
Gibt es eine möglichkeit die cloud-init datei automatisch anzupassen?
Für was ist der qemu-guest-agent denn noch da, wenn er sowas nicht kann?

Ja bei LXC containern klappt das super, wir setzten aber immer docker ein, somit fällt lxc meisten aus
 
hab jetzt ein kleines script geschrieben das das für mich automatisiert.

benötigt werden curl und jq (sind bei mir immer installiert)

das script liegt jetzt bei mir unter "/var/lib/cloud/scripts/per-boot"
es verbindet sich auf die proxmox api und findet mit hilfe der Mac Adresse den VM-Name heraus und setzt ihn als hostname

Bash:
#!/bin/bash

#login values
PROX_USERNAME=USER@pve
PROX_PASSWORD="geheimesPasswort"
HOST="https://proxmoxhost.tld"
#get all mac adresses
MAC_ADDRESS=($(cat /sys/class/net/*/address))

#get ticket
DATA=`curl -s4 -k -d "username=$PROX_USERNAME&password=$PROX_PASSWORD" $HOST/api2/json/access/ticket`
TICKET=$(echo $DATA | jq -r .data.ticket )
CSRF=$(echo $DATA | jq -r .data.CSRFPreventionToken)

#get all vms
DATA=$(curl -s4k -b "PVEAuthCookie=$TICKET" $HOST/api2/json/cluster/resources | jq -S -r '(.data[] |select(.type=="qemu")) ')
NODE=($(echo $DATA | jq -r .node))
VMID=($(echo $DATA | jq -r .vmid))
NAME=($(echo $DATA | jq -r .name | sed s/'VM.[0-9]*'/unnamed/g))
#get interface mac address
for ((i = 0 ; i < ${#VMID[@]} ; i++)); do
  DATA=$(curl -s4k -b "PVEAuthCookie=$TICKET" $HOST/api2/json/nodes/${NODE[$i]}/qemu/${VMID[$i]}/config)
  MAC=$(echo $DATA | jq .data.net0 | cut -d "=" -f2 | cut -d "," -f1)
  #compare mac adress
  if [[ "${MAC_ADDRESS[@]}" =~ "${MAC,,}" ]]; then
        echo $MAC
        echo ${NAME[$i]}
        #set hostame
        if [[ -n ${NAME[$i]} ]];then
          if [[ ! $(cat /etc/hostname) = ${NAME[$i]} ]];then
                hostnamectl set-hostname ${NAME[$i]}
                reboot
          fi
        fi
        break
  fi
done



edit: hab noch einen bug gefixet, damit es keine probleme mehr gibt wenn man mehrere vms gleichzeitg cloned und diese dann bis sie fertig sind "VM ???" heißen
 
Last edited:

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!