first
This commit is contained in:
84
README.md
Normal file
84
README.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# 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
|
||||
|
||||
```bash
|
||||
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.
|
||||
|
||||
```bash
|
||||
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.
|
||||
|
||||
```bash
|
||||
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`
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user