| Coriolis Worker API Calls for Export.json | ||
| provider_funktionsstatus.md | ||
| README.MD | ||
| setup.py | ||
| stackit_v2.endpoint | ||
ANLEITUNG: Installation des STACKIT Provider Plugins
Dies ist eine Schritt-für-Schritt-Anleitung, um Ihr benutzerdefiniertes STACKIT v2 Provider-Plugin auf einer laufenden Coriolis Appliance zu installieren.
Schritt 1: Code-Struktur vorbereiten
Stellen Sie sicher, dass Ihre Dateien exakt diese Struktur aufweisen. Sie benötigen einen Projekt-Ordner (z.B. `coriolis_stackit_plugin`) und darin das eigentliche Python-Paket.
```
coriolis_stackit_plugin/
├── setup.py
└── coriolis_stackit/
├── __init__.py
└── provider.py
```
* `setup.py`: Registriert den Provider bei Coriolis.
* `coriolis_stackit/provider.py`: Enthält die `StackitProvider`-Klasse inkl. aller Worker- und Datentransfer-Funktionen.
> **Abhängigkeiten:**
> Das Plugin benötigt mindestens `requests>=2.20.0` und `boto3>=1.24.0` (siehe `setup.py`), damit sowohl die STACKIT REST-APIs als auch optionale S3-Validierungen genutzt werden können.
Schritt 2: Plugin-Code auf die Appliance kopieren
1. **Verbinden:** Stellen Sie per SSH eine Verbindung zu Ihrer Coriolis Appliance her.
```bash
ssh [ihr_benutzer]@[ip_ihrer_coriolis_appliance]
```
2. **Code kopieren:** Kopieren Sie den gesamten Ordner `coriolis_stackit_plugin` (z.B. mit `scp` oder `rsync`) in ein temporäres Verzeichnis auf der Appliance, z.B. `/tmp/`.
*Beispiel mit `scp` (von Ihrem lokalen Rechner aus):*
```bash
scp -r /pfad/zu/ihrem/coriolis_stackit_plugin [ihr_benutzer]@[ip_ihrer_coriolis_appliance]:/tmp/
```
Schritt 3: Plugin in Coriolis installieren
1. **In das Verzeichnis wechseln:**
Gehen Sie auf der Appliance in das Verzeichnis, das Sie gerade kopiert haben.
```bash
cd /tmp/coriolis_stackit_plugin
```
2. **Python-Umgebung aktivieren:**
Coriolis verwendet eine eigene virtuelle Python-Umgebung (virtualenv). Der Pfad kann variieren, aber er ist oft unter `/opt/coriolis/` oder `/usr/share/coriolis/`. Sie müssen diese Umgebung aktivieren.
*(Suchen Sie nach `activate` in `/opt/coriolis/` oder `/usr/share/coriolis/`)*
*Beispiel:*
```bash
source /opt/coriolis/coriolis-env/bin/activate
```
*(Ihr Konsolen-Prompt sollte sich jetzt ändern und `(coriolis-env)` anzeigen)*
3. **Plugin installieren:**
Installieren Sie Ihr Plugin mit `pip` im "editable" Modus. Dies ist der wichtigste Befehl.
```bash
pip install -e .
```
*(Das `-e .` bedeutet, dass das Plugin von diesem Verzeichnis aus installiert wird. Pip liest die `setup.py` und führt die Installation durch.)*
4. **Dienste neu starten:**
Damit Coriolis das neu installierte Plugin erkennt, müssen Sie die Coriolis-Dienste neu starten.
```bash
sudo systemctl restart coriolis-api
sudo systemctl restart coriolis-worker
```
*(Die Dienstnamen können leicht variieren, z.B. `coriolis-conductor`)*
Schritt 4: Konfiguration des Endpoints (in der Coriolis UI)
Nachdem das Plugin installiert und der Dienst neu gestartet wurde, ist Ihr Provider "stackit_v2" für Coriolis bekannt.
-
.endpoint-Datei erstellen:Erstellen Sie auf Ihrem lokalen Rechner eine Datei, z.B.
stackit_v2.endpoint. -
Inhalt einfügen:
Fügen Sie den folgenden JSON-Inhalt ein und ersetzen Sie die Platzhalter.
Sie finden eine ausführliche Vorlage in
stackit_v2.endpoint. Die wichtigsten Felder sind:project_id,region,api_url,object_storage_api_url,auth_url- Object-Storage-Einstellungen (
object_storage_s3_endpoint_url,migration_bucket_name) - Worker-VM-Parameter (
worker_image_id,worker_flavor_id,worker_network_id,worker_availability_zone,worker_security_group_ids,worker_keypair_name) - Run-Command Zugang (
run_command_api_url, optional eigenesrun_command_template, Timeout) - Optional:
os_morphing_assets– Verweise auf S3-Objekte, die Skripte bzw. Treiber-Pakete für Linux- und Windows-OS-Morphing enthalten (siehe unten). - Optionale Worker-Metadaten und Steuerflags (
worker_user,worker_auto_cleanup,worker_boot_volume_size)
Diese Angaben werden von den Methoden
export_snapshot_to_url()undcreate_volume_from_url()genutzt, um automatisch Buckets anzulegen, temporäre Access Keys zu erzeugen, Worker-VMs zu starten und anschließend über die STACKIT Run-Command API die eigentlichen Datenbefehle (Upload/Download) auf der Worker-VM auszuführen. Stellen Sie sicher, dass Ihr Worker-Image den STACKIT Agent aktiviert hat, damit Run-Command die Shell-Skripte ausführen darf.
OS-Morphing:
Zusätzlich stehenprepare_instance_for_os_morphing()undinject_drivers()zur Verfügung. Beide Funktionen erstellen ebenfalls eine Worker-VM, hängen das Ziel-Volume an und führen die Morphing-Schritte direkt auf dem Block-Device aus.
- Für Linux existiert eine eingebaute Standard-Logik (DHCP, Cloud-Init, VirtIO-Module). Optional kann über
os_morphing_assets.linux.scriptein eigenes Skript bereitgestellt werden; dieses wird mit den UmgebungsvariablenCORIOLIS_DEVICEundCORIOLIS_JOB_JSONauf dem Worker ausgeführt.- Für Windows wird zwingend ein Skript (z.B. Shell/Python) über
os_morphing_assets.windows.scripterwartet, das die notwendigen Registry-/Treiber-Anpassungen vornimmt (z.B. durch Nutzung vonntfs-3g,chntpw,virtio-Treiberpaketen). Das Skript wird analog mitCORIOLIS_DEVICEundCORIOLIS_JOB_JSONaufgerufen und kann benötigte Pakete ebenfalls aus S3 laden.
* **WICHTIG:**
Der `"provider"`-Name (`"stackit_v2"`) muss exakt mit dem Namen übereinstimmen, den Sie in der `setup.py` unter `entry_points` definiert haben.
-
In Coriolis hochladen:
- Gehen Sie in Ihrer Coriolis Weboberfläche auf "Cloud Endpoints".
- Klicken Sie auf "New Cloud Endpoint".
- Klicken Sie unten auf den "upload"-Link (wie in Ihrem ersten Screenshot).
- Laden Sie Ihre
stackit_v2.endpoint-Datei hoch.
-
Validieren:
Coriolis wird die Datei lesen, Ihren
stackit_v2-Provider laden und dieauthenticate-Methode aufrufen. Wenn die Anmeldeinformationen korrekt sind, wird der Endpoint als "Valid" gespeichert.
Sie können nun mit dem Testen der list_...-Funktionen beginnen.