Proxmox VM in einen LXC Container konvertieren

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]
 -t|--target [target machine ssh uri]
 -i|--id [proxmox container id]
 -s|--root-size [rootfs size in GB]
 -a|--ip [target container ip]
 -b|--bridge [bridge interface]
 -g|--gateway [gateway ip]
 -m|--memory [memory in mb]
 -d|--disk-storage [target proxmox storage pool]
 -p|--password [root password for container (min. 5 chars)]

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

Schreibe einen Kommentar