3.5 KiB
Anleitung: Automatisierte Erstellung mehrerer LXC-Container
Übersicht
Dieses Projekt automatisiert die Erstellung und Konfiguration von LXC-Containern mit verschiedenen Linux-Distributionen.
Es besteht aus zwei Python-Skripten:
setup_host.py: Das Haupt-Skript, das Sie ausführen. Es orchestriert die Erstellung und Konfiguration von einem oder mehreren Containern.setup_container.py: Ein Hilfs-Skript, das vom Haupt-Skript automatisch in jeden neuen Container kopiert und dort ausgeführt wird, um die interne Konfiguration (Benutzer, SSH, etc.) vorzunehmen.
Sie interagieren nur mit setup_host.py.
Voraussetzungen
- LXD installiert: Sie müssen LXD auf Ihrem Host-System installiert und konfiguriert haben. Führen Sie bei Bedarf
lxd initaus, um LXD zu initialisieren. - Benutzerrechte: Der Benutzer, der das Skript ausführt, muss Mitglied der
lxd-Gruppe sein, um Container erstellen und verwalten zu dürfen.
Benutzung
Schritt 1: Skripte ausführbar machen
chmod +x setup_host.py setup_container.py
Schritt 2: Haupt-Skript ausführen
Führen Sie setup_host.py aus. Das Skript akzeptiert verschiedene Argumente, um den Erstellungsprozess anzupassen.
Wichtige Argumente
-c,--count: Die Gesamtanzahl der Container. (Standard:1)-p,--root-password: (Erforderlich) Das Passwort fürrootundjonnybravo.--image: Das zu verwendende Image. (Standard:images:archlinux)--hostname-template: Vorlage für die Namen der Container. Unterstützt{basename}und{i}. Wichtig: Muss{i}enthalten, wenn--count > 1.-b,--basename: Der Basisname für die Container, falls die Vorlage{basename}enthält. (Standard:vm)--no-port-forward: Deaktiviert die SSH-Port-Weiterleitung.--port-start: Der Start-Port für die SSH-Weiterleitung, falls diese aktiv ist. (Standard:2201)--ssh-pub-key-file: Pfad zu einem öffentlichen SSH-Schlüssel, der für den Benutzerjonnybravohinterlegt werden soll. (Standard:~/.ssh/id_rsa.pub)
Anwendungsbeispiele
Beispiel 1: Standard-Container
Erstellt einen einzelnen Arch-Linux-Container, der nur über den Host per Port-Weiterleitung erreichbar ist.
python3 setup_host.py -p "IhrSicheresPasswort"
*Ergebnis: Container ist über ssh root@localhost -p 2201 erreichbar. *
Beispiel 2: Mehrere Container ohne Port-Weiterleitung
Erstellt zwei Ubuntu-Container. Der Zugriff erfolgt hier nur über lxc exec oder durch manuelle Konfiguration im Nachhinein, da keine Ports weitergeleitet werden.
python3 setup_host.py \
-c 2 \
-p "EinAnderesSicheresPasswort" \
--image ubuntu:22.04 \
--hostname-template "backend-{i}" \
--no-port-forward
Ergebnis: Container sind nur über die vom Host zugewiesene interne IP oder lxc exec erreichbar.
Ausgabe & Verwaltung
- CSV-Datei: Alle erstellten Container werden mit Name und IP in
out/clients.csvgeloggt. - Container-Verwaltung: Nutzen Sie Standard-Befehle wie
lxc list,lxc stop <name>,lxc delete <name>. - Massen-Löschung:
lxc list projekt-x --format csv -c n | xargs -I {} lxc delete {} --forcelöscht alle Container, die mitprojekt-xbeginnen. - Image-Verwaltung:
lxc image listundlxc image delete <alias>.
Port-Verwaltung (falls genutzt)
Das Skript richtet eine Port-Weiterleitung namens ssh-proxy ein.
- Anzeigen:
lxc config show <container-name> - Entfernen:
lxc config device remove <container-name> ssh-proxy