VMWARE RVTOOLS → STACKIT · TUTORIAL
RVTools-Daten lesen: vInfo, vDisk und vNetwork für die STACKIT-Migration
Drei Blätter eines RVTools-Exports enthalten fast alles, was StackToIT für eine VMware-Umgebung braucht: vInfo beschreibt die Maschine, vDisk ihre Platten, vNetwork ihre Adapter. Diese Anleitung nimmt einen Demo-Export mit sieben Maschinen, führt die Bewertung aus und verfolgt einzelne Spalten bis in die Dateien, die der Lauf geschrieben hat, samt einer überzähligen Zeile, die den Entwurf stoppt.
Der Ablauf in sechs Schritten
Blätter in einen Ordner legen
Exportieren Sie die RVTools-Blätter als CSV-Dateien in einen Ordner oder behalten Sie die .xlsx-Arbeitsmappe. Der Demo-Ordner enthält RVTools_tabvInfo.csv, RVTools_tabvDisk.csv und RVTools_tabvNetwork.csv. Wird der Eingabetyp nicht erkannt, ergänzen Sie --input rvtools.
Bewertung ausführen
stacktoit assess ./rvtools-export ./vmware-migration liest die Dateien auf Ihrem Rechner. In der VMware-Umgebung wird nichts installiert, und StackToIT verbindet sich nicht mit vCenter.
Mit dem Architektenbericht beginnen
engineering/architect-report.md listet jede Einheit mit Klasse, Befunden und offenen Einstellungen und nennt die Zeilen, die der Lauf nicht zuordnen konnte. index.html zeigt dasselbe je Einheit.
Eine VM durch die Blätter verfolgen
Eine vInfo-Zeile wird zu einer Einheit namens vm.<Name>. Ihre vDisk-Zeilen werden zum Boot-Volume und zu weiteren Volumes, ihre vNetwork-Zeilen zu Netzwerkschnittstellen. Die nächsten vier Abschnitte zeigen das an echten Zeilen.
Nicht zugeordnete Zeilen lesen
Eine Detailzeile, die keine VM aus vInfo benennt, wird mit ihrer Zeilennummer gemeldet. Das ist eine Lücke in der Quelle, und der Entwurf wartet, bis sie geklärt ist.
Offene Einstellungen beantworten und erneut ausführen
Was der Export nicht sagen kann, etwa Maschinentypen, Subnetz-Präfixe und DNS-Server, tragen Sie in die Dateien unter review/ ein. Der nächste Lauf liest sie.
vDisk: Kapazität in MiB wird zur Größe in GiB
Ein Export mit sieben Maschinen, für diese Seite geschrieben und am 4. November 2026 von StackToIT bewertet. Links die beiden vDisk-Zeilen von erp-app01, rechts die Ressourcenblöcke des STACKIT-Terraforms, das die Engine dafür geschrieben hat; die Kommentarzeilen über jedem Block in der Datei sind hier ausgelassen.
VM,Disk,Capacity MiB,Raw,Disk Mode,Sharing mode,Thin,Controller,Shared Bus,Disk Path,VM UUID
erp-app01,Hard disk 1,61440,False,persistent,sharingNone,True,SCSI controller 0,noSharing,[ds-prod-01] erp-app01/erp-app01.vmdk,5001-aaaa-0001
erp-app01,Hard disk 2,143360,False,persistent,sharingNone,True,SCSI controller 0,noSharing,[ds-prod-01] erp-app01/erp-app01_1.vmdk,5001-aaaa-0001resource "stackit_server" "vm_erp_app01" {
project_id = var.project_id
name = "erp-app01"
machine_type = var.vm_erp_app01_machine_type
availability_zone = var.availability_zone
boot_volume = {
source_type = "image"
source_id = var.vm_erp_app01_image_id
size = 60
}
network_interfaces = [stackit_network_interface.vm_erp_app01_nic1.network_interface_id]
}
resource "stackit_volume" "vm_erp_app01_disk2" {
project_id = var.project_id
name = "erp-app01-disk2"
availability_zone = var.availability_zone
size = 140
performance_class = var.vmware_volume_performance_class
}Hard disk 1 ist das Boot-Volume
61440 MiB sind 60 GiB. Der Server startet von einem Image, das Sie aus dieser Platte erzeugen, und das Boot-Volume ist mit 60 dimensioniert.
Jede weitere Platte ist ein Volume
Hard disk 2 mit 143360 MiB wird zu einem Volume von 140 GiB. Der Kommentar in der Datei sagt, dass die Daten nach dem Anlegen kopiert werden: Der Entwurf plant das Volume, nicht den Kopiervorgang.
Der Maschinentyp bleibt Ihre Entscheidung
CPUs und Memory aus vInfo (4 und 16384) erscheinen nur in der Beschreibung der Variable für den Maschinentyp, als 4 vCPU und 16 GiB. Den STACKIT-Typ wählen Sie.
vDisk: Ein Raw Device beendet den automatischen Weg
Aus demselben Lauf. Links die drei Platten von erp-db01, die letzte mit Raw = True an einem physicalSharing-Bus. Rechts der Teil von assessment.json, der die Entscheidung für diese VM festhält (ohne die Kennungen der Befunde).
VM,Disk,Capacity MiB,Raw,Disk Mode,Sharing mode,Thin,Controller,Shared Bus,Disk Path,VM UUID
erp-db01,Hard disk 1,102400,False,persistent,sharingNone,False,SCSI controller 0,noSharing,[ds-prod-02] erp-db01/erp-db01.vmdk,5001-aaaa-0002
erp-db01,Hard disk 2,512000,False,persistent,sharingNone,False,SCSI controller 1,noSharing,[ds-prod-02] erp-db01/erp-db01_1.vmdk,5001-aaaa-0002
erp-db01,Hard disk 3,512000,True,persistent,sharingNone,False,SCSI controller 2,physicalSharing,[ds-san-01] erp-db01/erp-db01_rdm.vmdk,5001-aaaa-0002{
"id": "vm.erp-db01",
"result": {
"class": "MANUAL_REVIEW",
"confidence": "MEDIUM",
"findings": [
{
"severity": "critical",
"message": "Raw device mapping: the LUN is not part of the VM image, so an image export does not carry its data; it needs a block- or application-level copy to a STACKIT volume."
},
{
"severity": "critical",
"message": "Shared or multi-writer disks (clusters such as WSFC or Oracle RAC). Shared block storage for several servers is not verified on STACKIT in this knowledge base; the cluster design has to be reviewed."
},
{
"severity": "info",
"message": "Not verifiable statically (snapshots not visible): The VM has snapshots; consolidate them before export — only the current state is migrated."
}
]
}
}Die Klasse wechselt auf manuelle Prüfung
erp-db01 ist die einzige der sieben Maschinen mit der Klasse MANUAL_REVIEW, und compute.tf enthält für sie keinen Server-Block.
Zwei Befunde aus einer Zeile
Dieselbe dritte Platte löst einen Befund zum Raw Device und einen zu geteilten Platten aus, weil Shared Bus physicalSharing ist. Lesen Sie beide, bevor Sie die Kopie planen.
Warum das wichtig ist
Ein Raw-LUN liegt nicht in den VMDK-Dateien; ein Image-Export enthält seine Daten daher nicht. Der Befund verlangt eine Kopie auf Block- oder Anwendungsebene auf ein STACKIT-Volume.
vNetwork: eine Zeile je Adapter
Aus demselben Lauf. Links die beiden Adapterzeilen von gw-edge01, rechts die Netzwerkschnittstellen, die die Engine dafür geschrieben hat.
VM,NIC label,Adapter,Network,Switch,Connected,IPv4 Address,VM UUID
gw-edge01,Network adapter 1,Vmxnet3,PG-Edge,dvs-edge,True,192.0.2.10,5001-aaaa-0005
gw-edge01,Network adapter 2,Vmxnet3,PG-ERP-App,dvs-erp,True,10.40.10.1,5001-aaaa-0005resource "stackit_network_interface" "vm_gw_edge01_nic1" {
project_id = var.project_id
network_id = stackit_network.network_PG_Edge.network_id
ipv4 = "192.0.2.10"
}
resource "stackit_network_interface" "vm_gw_edge01_nic2" {
project_id = var.project_id
network_id = stackit_network.network_PG_ERP_App.network_id
ipv4 = "10.40.10.1"
}Die Spalte Network wählt das Netzwerk
PG-Edge und PG-ERP-App sind zwei Portgruppen; die beiden Schnittstellen zeigen daher auf zwei verschiedene STACKIT-Netzwerke.
Die IPv4-Adresse bleibt erhalten
Beide Schnittstellen tragen die Adresse aus dem Export. Ein Adapter ohne Adresse, wie der von arch-old01, bekommt eine Schnittstelle ohne feste Adresse.
Der Switch wird nicht übernommen
dvs-edge und dvs-erp sind Distributed Switches. Der Lauf führt den Switch unter den Eigenschaften auf, die der Entwurf nicht übernimmt, denn ein STACKIT-Netzwerk hat dafür keine Entsprechung.
Eine überzählige vDisk-Zeile und kein Entwurf
Unser erster Lauf über diese Umgebung hatte eine zusätzliche Zeile im Blatt vDisk, für eine Maschine, die nicht in vInfo steht. Links diese Zeile, rechts, was der Lauf dazu festgehalten hat (aus assessment.json).
VM,Disk,Capacity MiB,Raw,Disk Mode,Sharing mode,Thin,Controller,Shared Bus,Disk Path,VM UUID
retired-vm09,Hard disk 1,51200,False,persistent,sharingNone,True,SCSI controller 0,noSharing,[ds-prod-01] retired-vm09/retired-vm09.vmdk,5001-aaaa-0099{
"summary": {
"source_status": "RVTOOLS_DETAIL_UNMATCHED",
"source_file_gaps": [
{
"path": ".#vDisk",
"kind": "RVTOOLS_DETAIL_UNMATCHED",
"detail": "1 of 11 vDisk rows could not be attributed to exactly one vInfo VM (match rate 10/11); they are attached to no VM: row 12 VM \"retired-vm09\": no VM of vInfo has the name \"retired-vm09\" with the UUID 5001-aaaa-0099"
}
],
"blocked_outputs": [
{
"output": "STACKIT draft (terraform/)",
"reason": "a source file was not read in full (summary.source_file_gaps); no STACKIT draft is generated from a source that was not seen in full"
},
{
"output": "migration waves (migration/technical-sequencing.md, units[].wave)",
"reason": "a source file was not read in full (summary.source_file_gaps); a wave orders the whole estate and what is missing may hold units and dependencies"
}
]
}
}Es wurde nichts entworfen
Alle 12 Einheiten wurden bewertet, doch der Lauf schrieb weder Terraform noch Wellen, weil er keinen Entwurf aus einer Quelle erstellt, die er nicht vollständig gesehen hat.
Die Meldung nennt die Zeile
Sie nennt das Blatt, die Zeile, den VM-Namen und die UUID, zu denen es keinen Treffer gab, sowie die Trefferquote von 10 von 11 Zeilen.
Zeile entfernen und erneut ausführen
Ohne diese Zeile erzeugte dieselbe Umgebung den Entwurf: 10 Einheiten erzeugt, 2 beim Architekten belassen, 24 Variablen. Alle anderen Auszüge dieser Seite stammen aus diesem zweiten Lauf.
Welche Spalte was entscheidet
| Blatt und Spalte | Was der Lauf getan hat | Wo Sie es lesen |
|---|---|---|
| vInfo · Template | tpl-rhel9 ist mit True markiert: Klasse REPLATFORM, Ziel STACKIT-Image, kein Terraform-Block. Ein manueller Schritt verlangt Ihre Entscheidung, wie die Vorlage umzieht. | assessment.json, execution/manual/actions.md |
| vInfo · Powerstate | arch-old01 ist ausgeschaltet: Ein Hinweis fragt, ob die Maschine noch gebraucht wird. Der Entwurf schreibt keinen Betriebszustand für den Server; power-state gehört zu den offenen Einstellungen, über die Sie entscheiden. | engineering/architect-report.md |
| vInfo · CPUs, Memory | Nur in der Beschreibung der Variable für den Maschinentyp jedes Servers genannt. | terraform/variables.tf |
| vInfo · OS according to the configuration file | legacy-web01 meldet CentOS 7: eine Warnung, dass das Gastsystem nicht mehr vom Hersteller unterstützt wird. Die Spalte der VMware Tools wird nicht geprüft und wird einer Person überlassen. | engineering/architect-report.md |
| vInfo · Datacenter, Cluster, Host, Path | Stehen unter den kritischen Einstellungen, die bei Ihnen bleiben, etwa source-datacenter, source-cluster und datastore. Sie gehen nicht ins Terraform ein. | engineering/analysis-details.md |
| vDisk · Capacity MiB | Auf ganze GiB aufgerundet: 61440 wird zu 60, 143360 wird zu 140. | terraform/compute.tf |
| vDisk · Raw, Shared Bus | Kritische Befunde bei erp-db01. Die Einheit wechselt auf MANUAL_REVIEW, und es wird kein Server entworfen. | assessment.json |
| vDisk · Thin, Controller, Disk Mode | Thin und Controller stehen als Eigenschaften, die der Entwurf nicht übernimmt. Disk Mode bleibt eine offene Einstellung zur Bestätigung. | engineering/architect-report.md |
| vNetwork · Adapter | legacy-web01 nutzt E1000: Ein Hinweis verlangt, die Netzwerkkonfiguration des Gastes nach der Konvertierung zu prüfen. | engineering/architect-report.md |
| vNetwork · Connected | Der Adapter von arch-old01 ist nicht verbunden. Die Schnittstelle wird dennoch entworfen; der Verbindungsstatus ist eine offene Einstellung. | terraform/compute.tf, engineering/analysis-details.md |
Fehlen die Blätter vSnapshot und vMemory, warnt der Lauf, dass Snapshots und Speicherreservierung der 7 VMs unbekannt sind – das heißt nicht, dass es keine gibt. Nehmen Sie beide Blätter in den Export auf.
Vor dem Lauf: Export sauber verknüpfbar machen
Alle Blätter in einem RVTools-Lauf exportieren
Eine Platte, die zwischen zwei Exporten hinzukam, ist eine Zeile ohne passende Maschine. Ein Lauf, ein Zeitpunkt, ein Dateisatz.
Jede vDisk- und vNetwork-Zeile nennt eine VM aus vInfo
Name und, falls angegeben, UUID müssen zur selben Maschine gehören. Der Lauf meldet eine abweichende Zeile mit Blatt, Zeilennummer, Name und UUID.
vSnapshot und vMemory im Export behalten
Sie machen unbekannte Snapshots und Reservierungen zu bekannten. Die Backup-Checkliste für VMware-Umgebungen baut darauf auf.
Vorlagen und ausgeschaltete Maschinen klären
Sie werden wie jede andere Zeile bewertet. Entscheiden Sie früh, welche bleiben, damit die Prüfliste die wichtigen Maschinen zeigt.
Auch einen Lauf mit Lücken lesen
Die Einheiten und ihre Klassen werden auch dann geschrieben, wenn der Entwurf zurückgehalten wird. Raw Devices, nicht mehr unterstützte Gastsysteme und Maschinen mit mehreren Adaptern sehen Sie daher bereits.
Fragen zu den RVTools-Blättern
Welche RVTools-Blätter braucht StackToIT?
vInfo ist das Blatt, von dem der Lauf ausgeht. In dieser Anleitung lieferte vDisk die Platten und vNetwork die Adapter. vSnapshot und vMemory ergänzen Snapshots und Speicherreservierung; fehlen sie, sagt der Lauf das und behandelt die Werte als unbekannt.
Lässt eine nicht zuordenbare Zeile den Lauf scheitern?
Nein. Der Lauf endet normal und bewertet jede Einheit, schreibt aber weder Terraform noch Wellen, bis die Zeile korrigiert oder entfernt ist. Die Konsole meldet, dass die Quelle unvollständig ist.
Was geschieht mit VLAN-IDs und virtuellen Switches?
Jede Portgruppe wird zu einem STACKIT-Netzwerk. Der Lauf hält fest, dass VLAN-IDs und virtuelle Switches auf STACKIT keine Bedeutung haben; das Subnetz-Präfix jedes Netzwerks ist daher eine Variable, die Sie setzen. Die im Export gesehenen Adressen stehen in der Variablenbeschreibung.
Warum weichen Plattengrößen im Terraform vom Export ab?
RVTools meldet MiB; der Entwurf dimensioniert Volumes in GiB und rundet auf. Prüfen Sie, ob die Größe zur Last passt; der Lauf führt sie als Einstellung zur Bestätigung auf.
Kann ich statt CSV die .xlsx-Arbeitsmappe nutzen?
Ja. Die öffentliche Dokumentation zeigt stacktoit assess ./rvtools.xlsx ./vmware-migration. Die Blätter werden gleich gelesen.
Quellen
Ihr nächster Schritt: STACKIT.
Erzählen Sie uns von Ihrer Umgebung. Wir zeigen Ihnen, was StackToIT dafür liefert: Zielarchitektur, Terraform-Artefakte und einen strukturierten Migrationsplan.