Coriolis/README.MD

6.3 KiB
Raw Permalink Blame History

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.

  1. .endpoint-Datei erstellen:

    Erstellen Sie auf Ihrem lokalen Rechner eine Datei, z.B. stackit_v2.endpoint.

  2. 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 eigenes run_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() und create_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 stehen prepare_instance_for_os_morphing() und inject_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.script ein eigenes Skript bereitgestellt werden; dieses wird mit den Umgebungsvariablen CORIOLIS_DEVICE und CORIOLIS_JOB_JSON auf dem Worker ausgeführt.
  • Für Windows wird zwingend ein Skript (z.B. Shell/Python) über os_morphing_assets.windows.script erwartet, das die notwendigen Registry-/Treiber-Anpassungen vornimmt (z.B. durch Nutzung von ntfs-3g, chntpw, virtio-Treiberpaketen). Das Skript wird analog mit CORIOLIS_DEVICE und CORIOLIS_JOB_JSON aufgerufen 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.
  1. 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.
  2. Validieren:

    Coriolis wird die Datei lesen, Ihren stackit_v2-Provider laden und die authenticate-Methode aufrufen. Wenn die Anmeldeinformationen korrekt sind, wird der Endpoint als "Valid" gespeichert.

Sie können nun mit dem Testen der list_...-Funktionen beginnen.