Debian: lxc-to-go (rapid lxc deployment for mobile devices and servers)

Ich wünschte mir eine Containerlösung, die auch portabel ist und in anderen Netzen funktioniert.
Docker ist zwar eine interessante Sache, doch habe ich mich schon sehr an LXC gewöhnt.
Warum Linux? „Linux Network Namespaces“ sind um einiges robuster als FreeBSDs VIMAGE.
Sehr nervtötend ist jedoch die Netzwerkanpassung bei einem Umgebungswechsel, falls man mal schnell paar Container auf dem Laptop aufsetzen/einsetzen möchte.

Nun kam die Idee von „lxc-to-go“ ins Leben.

Das ist ein Skript welches:
– in einer minimalistischen Debian-Umgebung LXC installiert
– einen Container fürs „Routing“ erstellt und über eine interne Bridge (vswitch1) die eigentlich gewünschten Container anbindet
– bei „desktop“-Umgebungen (Laptop) die externe Bridge (vswitch0) weiterhin per Layer 2 erreichbar lässt (für IPv4-DHCP/IPv6-Router-Advertisements)
– bei „server“-Umgebungen Proxy_ARP und Proxy_NDP verwendet
– vorbereitete wheezy- und jessie-Templates (jessie mit systemd-sysv) beim lxc-clone verwendet
– eine schnelle Provisionierung erlaubt

Entgegen zu wiki.debian.org/LXC werden auch gleich die passenden Capabilities gesetzt um reibungslos systemd im Container benutzen zu können.

Getestet wird es unter Debian Wheezy/Jessie, jedoch empfehle ich explizit (zwecks vielen Bugfixes zwischen Kernel 3.2+/LXC 0.8+ und Kernel 3.16+/LXC 1.0+) „Jessie“ (Testing) zu nehmen.

Wechselt man nun seine Netzwerkumgebung, genügt ein erneutes Ausführen von
./lxc-to-go.sh bootstrap„, um den HOST und „managed“-LXC-Container die Netzwerksettings dynamisch anpassen zu lassen.

Hinweis:
Debian-Linux läuft bei mir in einer VirtualBox. Auf dem MacBook
bridged man das VirtualBox-Interface mit einer Wireless-LAN-Karte und
der Option Promiscuous-Modus: erlauben für alle VMs und den Host und
bootstrapt sich die lxc-to-go-„server“-Variante, funktioniert auch
(dank proxy_arp/ndp) das Routing für die lxc-to-go-Container!

lxc-to-go bootstrap (prototype > 0.11)

lxc-to-go_schema_

lxc-to-go for servers (prototype > 0.9)

lxc-to-go_servers_

lxc-to-go for mobile devices (prototype 0.6)

lxc-to-go_desktop_

In gewohnt gepflegter „BSD 2-Clause“-Manier steht es auf Github unter:
github.com/plitc/lxc-to-go
zur Verfügung.

Viel Spaß damit!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *