docs: initiale Anleitung für Custom Windows Image Migration inkl. Bilder und CLI-Befehlen
BIN
.DS_Store
vendored
Normal file
266
README.md
Normal 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
|
||||
|
||||

|
||||
|
||||
2) Auf “Weiter” klicken
|
||||
|
||||

|
||||
|
||||
3) Name und Pfad angeben: Name der neuen VM eintragen und ggf. abweichenden Speicherort → Weiter
|
||||
|
||||

|
||||
|
||||
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\!**
|
||||
|
||||

|
||||
|
||||
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
|
||||
|
||||

|
||||
|
||||
6) Netzwerk konfigurieren: Verbindung → Nicht verbunden
|
||||
|
||||

|
||||
|
||||
7) Virtuelle Festplatte verbinden: Name, Pfad und Größe definieren
|
||||
|
||||

|
||||
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
|
||||
|
||||

|
||||
|
||||
9) Abschließen des Assistenten für neue virtuelle Computer: Fertig stellen
|
||||
|
||||

|
||||
|
||||
10) Hyper-V-Manager nach Erstellung der neuen VM
|
||||
|
||||

|
||||
|
||||
11) Die bereits heruntergeladenen virtio-Treiber via ISO anbinden:
|
||||
|
||||

|
||||
|
||||
12) Mit neuer VM „Verbinden“
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
13) Neue VM zum ersten Mal starten und OS-Installation durchführen
|
||||
|
||||

|
||||
|
||||
14) Windows Server Setup durchführen (Screenshots basieren auf Windows Server 2022):
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
15)
|
||||
|
||||

|
||||
|
||||
16)
|
||||
|
||||

|
||||
|
||||
17)
|
||||
|
||||

|
||||
|
||||
18) Die Auswahl “Load Driver” verwenden
|
||||
|
||||

|
||||
|
||||
19) Es ist nun die Installation von **drei** virtio Treibern notwendig, damit das Image auf den STACKIT Hypervisor verwenden werden kann
|
||||
|
||||

|
||||
|
||||
**NetKVM Treiber**
|
||||

|
||||
|
||||
****
|
||||
|
||||
**Viostor**
|
||||

|
||||
|
||||

|
||||
|
||||
**Vioscsi**
|
||||

|
||||
|
||||

|
||||
|
||||
20)
|
||||

|
||||
|
||||
21)
|
||||

|
||||
|
||||
|
||||
|
||||
22)
|
||||

|
||||
|
||||
|
||||
|
||||
23) Anzeigekonfiguration
|
||||
|
||||

|
||||
|
||||
|
||||
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
|
||||
|
||||

|
||||
|
||||
29) Lizenzvereinbarung zustimmen
|
||||
|
||||

|
||||
|
||||
30) Setup-Typ bestätigen
|
||||
|
||||

|
||||
|
||||
31) Konfigurationsoptionen festlegen
|
||||
|
||||
****
|
||||
|
||||
|
||||
32) Installation starten
|
||||
|
||||

|
||||
|
||||
33) Installation abschließen und Sysprep ausführen
|
||||
|
||||
|
||||

|
||||
|
||||
34) Sysprep-Generalisierung läuft
|
||||
|
||||

|
||||
|
||||
# 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.
|
||||

|
||||
|
||||
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
BIN
images/image1.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
images/image10.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
images/image11.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
images/image12.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
images/image13.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
images/image14.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
images/image15.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
images/image16.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
images/image17.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
images/image18##.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
images/image18.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
images/image19.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
images/image2.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
images/image20.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
images/image21.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
images/image22.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
images/image23.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
images/image24.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
images/image25.png
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
images/image26.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
images/image27.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
images/image28.png
Normal file
|
After Width: | Height: | Size: 717 KiB |
BIN
images/image29.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
images/image3.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
images/image30.png
Normal file
|
After Width: | Height: | Size: 642 KiB |
BIN
images/image31.png
Normal file
|
After Width: | Height: | Size: 282 KiB |
BIN
images/image32.png
Normal file
|
After Width: | Height: | Size: 462 KiB |
BIN
images/image33.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
images/image34.png
Normal file
|
After Width: | Height: | Size: 379 KiB |
BIN
images/image35.png
Normal file
|
After Width: | Height: | Size: 246 KiB |
BIN
images/image36.png
Normal file
|
After Width: | Height: | Size: 191 KiB |
BIN
images/image37.png
Normal file
|
After Width: | Height: | Size: 218 KiB |
BIN
images/image4.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
images/image41.png
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
images/image5.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
images/image6.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
images/image7.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
images/image8.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
images/image9.png
Normal file
|
After Width: | Height: | Size: 20 KiB |