2025-09-19 09:58:36 +02:00
2025-09-17 12:26:13 +02:00
2025-09-17 12:26:13 +02:00
2025-09-17 12:26:13 +02:00
add
2025-09-19 09:58:36 +02:00

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:

  1. setup_host.py: Das Haupt-Skript, das Sie ausführen. Es orchestriert die Erstellung und Konfiguration von einem oder mehreren Containern.
  2. 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 init aus, 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ür root und jonnybravo.
  • --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)

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.csv geloggt.
  • 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 {} --force löscht alle Container, die mit projekt-x beginnen.
  • Image-Verwaltung: lxc image list und lxc 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
Description
No description provided
Readme 42 KiB
Languages
Python 100%