Custom_Windows_Image_Anleitung/README.md
2025-12-29 15:38:45 +01:00

266 lines
9.6 KiB
Markdown

## **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
<p align="center"><img src="images/image1.png" width="650"></p>
2) Auf “Weiter” klicken
<p align="center"><img src="images/image2.png" width="650"></p>
3) Name und Pfad angeben: Name der neuen VM eintragen und ggf. abweichenden Speicherort → Weiter
<p align="center"><img src="images/image3.png" width="650"></p>
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\!**
<p align="center"><img src="images/image4.png" width="650"></p>
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
<p align="center"><img src="images/image5.png" width="650"></p>
6) Netzwerk konfigurieren: Verbindung → Nicht verbunden
<p align="center"><img src="images/image6.png" width="650"></p>
7) Virtuelle Festplatte verbinden: Name, Pfad und Größe definieren
<p align="center"><img src="images/image7.png" width="650"></p>
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
<p align="center"><img src="images/image8.png" width="650"></p>
9) Abschließen des Assistenten für neue virtuelle Computer: Fertig stellen
<p align="center"><img src="images/image9.png" width="650"></p>
10) Hyper-V-Manager nach Erstellung der neuen VM
<p align="center"><img src="images/image10.png" width="650"></p>
11) Die bereits heruntergeladenen virtio-Treiber via ISO anbinden:
<p align="center"><img src="images/image11.png" width="650"></p>
12) Mit neuer VM „Verbinden“
<p align="center"><img src="images/image12.png" width="650"></p>
<p align="center"><img src="images/image13.png" width="650"></p>
13) Neue VM zum ersten Mal starten und OS-Installation durchführen
<p align="center"><img src="images/image14.png" width="650"></p>
14) Windows Server Setup durchführen (Screenshots basieren auf Windows Server 2022):
<p align="center"><img src="images/image15.png" width="650"></p>
<p align="center"><img src="images/image16.png" width="650"></p>
15)
<p align="center"><img src="images/image17.png" width="650"></p>
16)
<p align="center"><img src="images/image18.png" width="650"></p>
17)
<p align="center"><img src="images/image19.png" width="650"></p>
18) Die Auswahl “Load Driver” verwenden
<p align="center"><img src="images/image20.png" width="650"></p>
19) Es ist nun die Installation von **drei** virtio Treibern notwendig, damit das Image auf den STACKIT Hypervisor verwenden werden kann
<p align="center"><img src="images/image21.png" width="650"></p>
**NetKVM Treiber**
<p align="center"><img src="images/image22.png" width="650"></p>
**<p align="center"><img src="images/image23.png" width="650"></p>**
**Viostor**
<p align="center"><img src="images/image24.png" width="650"></p>
<p align="center"><img src="images/image41.png" width="650"></p>
**Vioscsi**
<p align="center"><img src="images/image24.png" width="650"></p>
<p align="center"><img src="images/image25.png" width="650"></p>
20)
<p align="center"><img src="images/image26.png" width="650"></p>
21)
<p align="center"><img src="images/image27.png" width="650"></p>
22)
<p align="center"><img src="images/image28.png" width="650"></p>
23) Anzeigekonfiguration
<p align="center"><img src="images/image29.png" width="650"></p>
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
<p align="center"><img src="images/image30.png" width="650"></p>
29) Lizenzvereinbarung zustimmen
<p align="center"><img src="images/image31.png" width="650"></p>
30) Setup-Typ bestätigen
<p align="center"><img src="images/image32.png" width="650"></p>
31) Konfigurationsoptionen festlegen
**<p align="center"><img src="images/image33.png" width="650"></p>**
32) Installation starten
<p align="center"><img src="images/image34.png" width="650"></p>
33) Installation abschließen und Sysprep ausführen
<p align="center"><img src="images/image35.png" width="650"></p>
34) Sysprep-Generalisierung läuft
<p align="center"><img src="images/image36.png" width="650"></p>
# 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.
<p align="center"><img src="images/image37.png" width="650"></p>
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)