docs: initiale Anleitung für Custom Windows Image Migration inkl. Bilder und CLI-Befehlen

This commit is contained in:
Gurwinder_Singh 2025-12-29 15:12:44 +01:00
commit f112b40183
42 changed files with 266 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

266
README.md Normal file
View file

@ -0,0 +1,266 @@
## **Anleitung: BYOL-Migration zu STACKIT**
Dieses Dokument bietet einen Migrationspfad für Ihre selbst erstellte Windows Server VM (Bring Your Own License) von einer lokalen Virtualisierungsumgebung (z.B. Hyper-V / VirtualBox) auf der STACKIT Cloud-Plattform.
Der detaillierte Prozess erlaubt die technische Kompatibilität durch die Integration der VirtIO-Treiber und die Konvertierung der Festplatten-Images. Die Durchführung dieser Schritte ermöglicht Ihnen, Ihre eigenen Windows-Lizenzen in der STACKIT Cloud zu nutzen.
### **Voraussetzungen**
Um diesen Workflow erfolgreich durchzuführen, benötigen Sie Zugriff auf die folgenden Tools und Ressourcen:
- STACKIT Windows VM (empfohlenes Sizing)
* Flavor G2i.8
* Disk OS Perf6 \- 64GB
* Data/Image Disk Perf10: 100GB
- Hyper-V (Als Virtualisierungsplattform über die Windows-Rolle/Funktion installieren): z.B. über Server Manager
- Qemu-img installieren: [https://www.qemu.org/download/\#windows](https://www.qemu.org/download/#windows)
- STACKIT cli installieren: [https://github.com/stackitcloud/stackit-cli/releases](https://github.com/stackitcloud/stackit-cli/releases)
- Virtio Treiber: [https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/?C=M;O=D](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/?C=M;O=D)
- Cloud-base Init: [https://github.com/cloudbase/cloudbase-init/releases](https://github.com/cloudbase/cloudbase-init/releases)
1) Neue VM einrichten: Aktion → Neu → Virtueller Computer
![Schritt 1](images/image1.png)
2) Auf “Weiter” klicken
![Schritt 2](images/image2.png)
3) Name und Pfad angeben: Name der neuen VM eintragen und ggf. abweichenden Speicherort → Weiter
![Bild 3](images/image3.png)
4) Generation 2 auswählen
**Generation 2: Beim Starten der VM muss manuell „Any Key“ gedrückt werden damit der Bootvorgang vom ISO-Image aus durchgeführt wird. Sollte man den Zeitpunkt verpassen, startet die Installationsroutine nicht\!**
![Bild 4](images/image4.png)
5) Speicher zuweisen: Arbeitsspeicher beim Start → Wert nach Bedarf eintragen (z. B. 4096 MB)
Dynamischen Arbeitsspeicher für diesen virtuellen Computer verwenden → Kontrollkästchen deaktivieren
![Bild 5](images/image5.png)
6) Netzwerk konfigurieren: Verbindung → Nicht verbunden
![Bild 6](images/image6.png)
7) Virtuelle Festplatte verbinden: Name, Pfad und Größe definieren
![Bild 7](images/image7.png)
Die konfigurierte Größe entspricht der Mindestgröße des Volumes des zukünftigen Servers in STACKIT
8) Installationsoptionen: Betriebssystem von einer startbaren CD/DVD-ROM installieren → Abbilddatei (ISO) auswählen und via Durchsuchen das erforderliche ISO-Image auswählen
![Bild 8](images/image8.png)
9) Abschließen des Assistenten für neue virtuelle Computer: Fertig stellen
![Bild 9](images/image9.png)
10) Hyper-V-Manager nach Erstellung der neuen VM
![Bild 10](images/image10.png)
11) Die bereits heruntergeladenen virtio-Treiber via ISO anbinden:
![Bild 11](images/image11.png)
12) Mit neuer VM „Verbinden“
![Bild 12](images/image12.png)
![Bild 13](images/image13.png)
13) Neue VM zum ersten Mal starten und OS-Installation durchführen
![Bild 14](images/image14.png)
14) Windows Server Setup durchführen (Screenshots basieren auf Windows Server 2022):
![Bild 15](images/image15.png)
![Bild 16](images/image16.png)
15)
![Bild 17](images/image17.png)
16)
![Bild 18](images/image18.png)
17)
![Bild 19](images/image19.png)
18) Die Auswahl “Load Driver” verwenden
![Bild 20](images/image20.png)
19) Es ist nun die Installation von **drei** virtio Treibern notwendig, damit das Image auf den STACKIT Hypervisor verwenden werden kann
![Bild 21](images/image21.png)
**NetKVM Treiber**
![Bild 22](images/image22.png)
**![Bild 23](images/image23.png)**
**Viostor**
![Bild 24](images/image24.png)
![Bild 25](images/image41.png)
**Vioscsi**
![Bild 24](images/image24.png)
![Bild 24](images/image25.png)
20)
![Bild 26](images/image26.png)
21)
![Bild 27](images/image27.png)
22)
![Bild 28](images/image28.png)
23) Anzeigekonfiguration
![Bild 29](images/image29.png)
24) Es sollten nun noch die zwei Virtio Packages (virtio-win-gt-x64.msi und virtio-win-guest-tools.exe) von der Virtio
ISO Datei installiert werden. Es wird zudem empfohlen den Inhalt der Virtio ISO Datei auf das neue System zu
kopieren (z.B. C:\\temp\\virtio\\). Das hat den Vorteil, dass man später relativ einfach Treiber nachinstallieren kann
25) Löschen der Windows Recovery Partition
Dieser Schritt ist zwingend notwendig, damit das Volume des späteren Servers auf STACKIT flexibel erweitert werden kann.
| Schritt | Befehl | Details / Hinweise |
| :--- | :--- | :--- |
| **1** | `diskpart` | Startet das Partitionierungsprogramm. |
| **2** | `select disk 0` | Wählt die Festplatte aus. **Prüfen Sie unbedingt**, ob Disk 0 korrekt ist! |
| **3** | `list partition` | Zeigt alle vorhandenen Partitionen an. |
| **4** | `select partition <nr>` | Wählen Sie die Nummer der Recovery-Partition. Falls Partition 3 nicht korrekt ist, geben Sie die richtige Nummer ein. |
| **5** | `delete partition override` | Löscht die Partition erzwingend. |
| **6** | `list partition` | Kontrolle, ob die Partition erfolgreich entfernt wurde. |
26) Das Windows System kann nun mit individueller Software angepasst und für das spätere Image vorbereitet werden.
27) Zum Abschluss noch das [**Cloudbase-init Tool**](https://cloudbase.it/cloudbase-init/) auf der Windows VM ausführen und Windows in die finale Ausgangsposition für den Move auf die STACKIT Cloud bringen\!
28) Cloudbase-Init Setup starten
![Bild 30](images/image30.png)
29) Lizenzvereinbarung zustimmen
![Bild 31](images/image31.png)
30) Setup-Typ bestätigen
![Bild 32](images/image32.png)
31) Konfigurationsoptionen festlegen
**![Bild 33](images/image33.png)**
32) Installation starten
![Bild 34](images/image34.png)
33) Installation abschließen und Sysprep ausführen
![Bild 35](images/image35.png)
34) Sysprep-Generalisierung läuft
![Bild 36](images/image36.png)
# 35. Image-Upload & VM Creation in STACKIT
Nachdem die lokale Vorbereitung abgeschlossen ist, wird das Image konvertiert und via STACKIT CLI übertragen.
---
#### 36. Image-Konvertierung (qCow2)
Konvertieren Sie das lokale VHDX in das qcow2 Format:
```bash
qemu-img convert -f vhdx -O qcow2 <Pfad_zu_vhdx> <Pfad_zur_qcow2>
```
#### 37. STACKIT CLI Login
Authentifizierung an der CLI:
```bash
stackit auth login
```
#### 38. Image-Upload
Laden Sie das Image in Ihr STACKIT-Projekt hoch:
```bash
stackit image create --name <win2025virtio> --disk-format=qcow2 --local-file-path="<path2qcow2>" -p <projectID>
```
#### 39. Status-Check
Überprüfen Sie den Upload-Fortschritt und Details:
```bash
stackit image list -p <projectID>
stackit image describe <imageID> -p <projectID>
```
> **Wichtig:** Entnehmen Sie dem Output die generierte `imageID`. Diese ID müssen Sie im nächsten Schritt als `<image_id>` angeben, um das Volume und die VM basierend auf diesem Image zu erstellen.
#### 40. Provisionierung (Volume & Server)
Erstellen Sie zuerst das Volume und starten Sie dann die VM:
**Step 1: Volume erstellen**
```bash
stackit volume create --availability-zone <AZ> \
--name <volumename> --source-id <image_id> \
--source-type image --size <GB> -p <projectID>
```
**Step 2: Server instanziieren**
```bash
stackit server create -n <servername> \
--availability-zone <AZ> --machine-type <machineType> \
--network-id <networkID> --boot-volume-source-id <volumeID> \
--boot-volume-source-type volume -p <projectID>
```
#### 41. Image Sharing (Cross-Project)
Image für andere Projekt-IDs innerhalb der Organisation freigeben:
```bash
stackit curl -X PATCH -H "Content-Type: application/json" \
--data '{"projects": ["<ID1>", "<ID2>"]}' \
[https://iaas.api.eu01.stackit.cloud/v1/projects/](https://iaas.api.eu01.stackit.cloud/v1/projects/)<PROJECT_ID>/images/<IMAGE_ID>/share
```
#### 42. Abschluss
Überprüfen, ob alle Treiber im Betriebssystem korrekt geladen sind.
Nach dem Start der VM in STACKIT über den “Gerätemanager” prüfen, ob alle Treiber korrekt geladen wurden.
![Bild 39](images/image37.png)
Referenzen:
[https://docs.stackit.cloud/stackit/en/create-a-windows-server-via-stackit-iaas-api-cli-98304598.html](https://docs.stackit.cloud/stackit/en/create-a-windows-server-via-stackit-iaas-api-cli-98304598.html)

BIN
images/.DS_Store vendored Normal file

Binary file not shown.

BIN
images/image1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
images/image10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
images/image11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
images/image12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
images/image13.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
images/image14.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
images/image15.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
images/image16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
images/image17.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
images/image18##.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
images/image18.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
images/image19.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
images/image2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
images/image20.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

BIN
images/image21.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
images/image22.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
images/image23.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

BIN
images/image24.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
images/image25.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
images/image26.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
images/image27.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
images/image28.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 KiB

BIN
images/image29.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
images/image3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
images/image30.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 KiB

BIN
images/image31.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

BIN
images/image32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 KiB

BIN
images/image33.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
images/image34.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 KiB

BIN
images/image35.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

BIN
images/image36.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

BIN
images/image37.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

BIN
images/image4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
images/image41.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
images/image5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
images/image6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/image7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
images/image8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
images/image9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB