Nach sowas suche ich schon länger und hab das convert any gnu/linux machine into a proxmox lxc container gefunden.
Ein kleines Skript was eine VM (und auch andere Linux Server) in einen LXC Container konvertiert. Und es funktioniert!
Denke aber die sauberste Lösung ist immer einen neuen Container aufzusetzen und diesen dann entsprechend einzurichten.
Habs zuerst mit einer Debian 11 Test-VM probiert und danach mit einer Debian 10 BackupPC-VM. Beide wurden erfolgreich konvertiert!
konvertieren
In der VM, die konvertiert werden soll, muss der SSH Zugang für root erlaubt sein. In der /etc/ssh/sshd_config freischalten.
PermitRootLogin yes
Auf dem Proxmox Host das Skript herunterladen und ausführbar machen.
$ wget https://raw.githubusercontent.com/my5t3ry/machine-to-proxmox-lxc-ct-converter/master/convert.sh $ chmod +x convert.sh
Die Parameter die angegeben werden müssen.
$ ./convert.sh --help -n|--name [lxc container name] # neuer Container Name -t|--target [target machine ssh uri] # IP Adresse der zu konvertierenden VM -i|--id [proxmox container id] # neuer Container ID -s|--root-size [rootfs size in GB] # neuer Container Größe der Festplatte -a|--ip [target container ip] # neuer Container IP Adresse -b|--bridge [bridge interface] # neuer Container Bridge Interface -g|--gateway [gateway ip] # neuer Container Gateway IP -m|--memory [memory in mb] # neuer Container Größe des Arbeitsspeichers -d|--disk-storage [target proxmox storage pool] # neuer Container Storage Pool auf dem Proxmox Server -p|--password [root password for container (min. 5 chars)] # neuer Container root password
Der Befehl mit den gewünschten Parametern auf dem Proxmox Host (als root) ausführen. (konvertiert meine BackupPC-VM in einen LXC Container)
$ ./convert.sh \ -n backuppc \ -t 192.168.50.44 \ -i 312 \ -s 15 \ -a 192.168.50.44 \ -b vmbr0 \ -g 192.168.50.1 \ -m 1024 \ -d local-lvm \ -p CT-PASSWORT
Je nach Füllstand der VM dauert das natürlich etwas. Man sollte auch den Speicherbedarf der temporären Archivdatei berücksichtigen.
das Skript
- erstellt von dem zu konvertierenden System über SSH ein TAR Archiv des Dateisystems nach /tmp/containername.tar.gz
- aus dem TAR Archiv wird dann mit pct create ein neuer Container mit den übergebenen Parametern erstellt
- /tmp/containername.tar.gz wird wieder gelöscht
Das Skript funktioniert gut, kann aber bestimmt noch etwas optimiert werden. ;)
Hat man eine kleine pve-root Partition, kann diese schnell voll werden, da das Archiv in /tmp erstellt wird!
Problemchen
In beiden konvertierten Containern dürfen andere user keinen ping mehr ausführen!?
backup@backuppc:/$ ping heise.de ping: socket: Operation not permitted
Die Lösung war ein reinstall des iputils-ping Paketes, danach dürfen auch alle wieder pingen.
$ apt install iputils-ping --reinstall
Hallo, ich brauche etwas Hilfe bei diesem Thema, ich verstehe nicht sehr gut, wo ich die Parameter zum Konvertieren der VM, im Hilfeteil angeben soll??, helfen Sie mir bitte, ich habe Angst, mein Proxmox zu beschädigen, Grüße
Stimmt, ist vielleicht nicht ganz eindeutig wo was hin muss.
Hab die –help Auflistung erweitert.
Hallo, vielen Dank für die Klarstellung, ich habe es geschafft, das Skript zum Laufen zu bringen, aber ohne Erfolg, ich hatte die folgende Ausgabe:
Unbekannte Option: Funktionen
400 Option kann nicht analysiert werden
Irgendwelche Ideen??
Gib mal alles in einer Zeile ein, vielleicht irgendwo ein Leerzeichen vergessen?
./convert.sh -n backuppc -t 192.168.50.44 etc.