VMWARE → STACKIT · MAPPING
VMware port groups and STACKIT networks, mapped
A port group becomes a STACKIT network, and each VM adapter becomes a network interface in that network. What the port group carried beside its name, the VLAN ID, the virtual switch, the subnet mask and the DNS servers, has to be stated again on the STACKIT side. This page maps each part on a seven-VM estate that StackToIT assessed on 4 November 2026.
From vNetwork rows to STACKIT networks
Left: the vNetwork sheet of a demo estate written for this page, seven VMs on six port groups, five of them on a distributed switch and one on a standard switch. Right: the six network blocks of the Terraform the run wrote, without the review comments that sit above each block in the file.
VM,NIC label,Adapter,Network,Switch,Connected,IPv4 Address,VM UUID
web01,Network adapter 1,Vmxnet3,PG-Web-DMZ-VLAN110,dvs-prod,True,10.10.110.11,4202-vm08-0001
web02,Network adapter 1,Vmxnet3,PG-Web-DMZ-VLAN110,dvs-prod,True,10.10.110.12,4202-vm08-0002
app01,Network adapter 1,Vmxnet3,PG-App-VLAN120,dvs-prod,True,10.10.120.21,4202-vm08-0003
app01,Network adapter 2,Vmxnet3,PG-Backup-VLAN900,dvs-prod,True,10.10.90.21,4202-vm08-0003
db01,Network adapter 1,Vmxnet3,PG-DB-VLAN130,dvs-prod,True,10.10.130.31,4202-vm08-0004
db01,Network adapter 2,Vmxnet3,PG-Backup-VLAN900,dvs-prod,True,10.10.90.31,4202-vm08-0004
legacy01,Network adapter 1,E1000,VM Network,vSwitch0,True,192.168.50.5,4202-vm08-0005
jump01,Network adapter 1,Vmxnet3,PG-Mgmt-VLAN10,dvs-prod,True,10.10.10.5,4202-vm08-0006
jump01,Network adapter 2,Vmxnet3,PG-Backup-VLAN900,dvs-prod,False,10.10.90.5,4202-vm08-0006
tpl-rhel9,Network adapter 1,Vmxnet3,PG-App-VLAN120,dvs-prod,False,,4202-vm08-0007resource "stackit_network" "network_PG_App_VLAN120" {
project_id = var.project_id
name = "pg-app-vlan120"
ipv4_prefix = var.network_PG_App_VLAN120_ipv4_prefix
ipv4_nameservers = var.network_PG_App_VLAN120_ipv4_nameservers
}
resource "stackit_network" "network_PG_Backup_VLAN900" {
project_id = var.project_id
name = "pg-backup-vlan900"
ipv4_prefix = var.network_PG_Backup_VLAN900_ipv4_prefix
ipv4_nameservers = var.network_PG_Backup_VLAN900_ipv4_nameservers
}
resource "stackit_network" "network_PG_DB_VLAN130" {
project_id = var.project_id
name = "pg-db-vlan130"
ipv4_prefix = var.network_PG_DB_VLAN130_ipv4_prefix
ipv4_nameservers = var.network_PG_DB_VLAN130_ipv4_nameservers
}
resource "stackit_network" "network_PG_Mgmt_VLAN10" {
project_id = var.project_id
name = "pg-mgmt-vlan10"
ipv4_prefix = var.network_PG_Mgmt_VLAN10_ipv4_prefix
ipv4_nameservers = var.network_PG_Mgmt_VLAN10_ipv4_nameservers
}
resource "stackit_network" "network_PG_Web_DMZ_VLAN110" {
project_id = var.project_id
name = "pg-web-dmz-vlan110"
ipv4_prefix = var.network_PG_Web_DMZ_VLAN110_ipv4_prefix
ipv4_nameservers = var.network_PG_Web_DMZ_VLAN110_ipv4_nameservers
}
resource "stackit_network" "network_VM_Network" {
project_id = var.project_id
name = "vm-network"
ipv4_prefix = var.network_VM_Network_ipv4_prefix
ipv4_nameservers = var.network_VM_Network_ipv4_nameservers
}One port group, one network
Six port groups give six networks. They form the first wave of the run, and every server waits for the networks it uses.
The VLAN lives on only in the name
PG-App-VLAN120 becomes pg-app-vlan120. The reason text of the run says that VLAN IDs and virtual switches have no meaning on STACKIT, so the number is a label now, and a Platform Architect step asks you to confirm the name against whatever refers to the old one.
Prefix and DNS become variables
The draft sets no address range and no name servers. Both are variables per network that you fill in; a later section shows one of them.
A default name is cleaned up
The standard-switch network VM Network is written as vm-network. The comment above the block says the name was made valid for STACKIT and keeps the source name.
Each part of a port group and where it goes
| VMware | STACKIT | What the run does, and what you decide |
|---|---|---|
| Port group, for example PG-App-VLAN120 | stackit_network | One network per port group found in the vNetwork sheet. The name is carried over in lower case with hyphens; a manual step asks you to confirm it. |
| VLAN ID | No counterpart | A number inside a port group name stays inside the name. StackToIT does not turn it into anything on the STACKIT side. |
| Virtual switch (dvs-prod, vSwitch0) | No counterpart | The switch is the one property of a port group that assessment.json lists as unaccounted for the network units. It is not written anywhere in the draft. |
| Subnet mask | ipv4_prefix, a CIDR | RVTools exports addresses, not masks. The draft declares a variable and its description lists the addresses seen on the port group. A Network Architect step asks you to set the prefix. |
| DNS servers | ipv4_nameservers | A variable per network, because the export does not show which servers the VMs use. If the argument is left unset on creation, the provider documentation says the network takes the default name servers of the network area. |
| VM adapter, Network adapter 1 | stackit_network_interface in the matching network | The address comes from the IPv4 column. The STACKIT documentation states that the address of an interface cannot be changed after creation. |
| Several adapters on one VM | Several interfaces on one server | app01, db01 and jump01 have two adapters each and get two interfaces each. The documentation allows up to five interfaces per server. |
| Adapter shown as not connected | Interface is still written | The second adapter of jump01 is disconnected in the export. The interface is written with its address, and whether it should be connected stays an open setting for review. |
| Adapter type, Vmxnet3 or E1000 | Replaced by the guest drivers | The type has no STACKIT counterpart. The run adds an info finding for the legacy E1000 adapter of legacy01: check the guest network configuration after conversion. |
| Port group security policy | Security groups and NIC security | Neither the export nor the draft carries it. The interface blocks hold no security settings, so you design the groups. |
Figures and statements of the left and middle columns come from assessment.json, engineering/architect-report.md and terraform/ of the run; statements about STACKIT limits come from the STACKIT documentation listed under the sources.
A server on two networks
The application server app01 sits on the application network and on the backup network. Left: its two vNetwork rows. Right: the two interfaces and the server of the draft, without the review comments.
VM,NIC label,Adapter,Network,Switch,Connected,IPv4 Address,VM UUID
app01,Network adapter 1,Vmxnet3,PG-App-VLAN120,dvs-prod,True,10.10.120.21,4202-vm08-0003
app01,Network adapter 2,Vmxnet3,PG-Backup-VLAN900,dvs-prod,True,10.10.90.21,4202-vm08-0003resource "stackit_network_interface" "vm_app01_nic1" {
project_id = var.project_id
network_id = stackit_network.network_PG_App_VLAN120.network_id
ipv4 = "10.10.120.21"
}
resource "stackit_network_interface" "vm_app01_nic2" {
project_id = var.project_id
network_id = stackit_network.network_PG_Backup_VLAN900.network_id
ipv4 = "10.10.90.21"
}
resource "stackit_server" "vm_app01" {
project_id = var.project_id
name = "app01"
machine_type = var.vm_app01_machine_type
availability_zone = var.availability_zone
boot_volume = {
source_type = "image"
source_id = var.vm_app01_image_id
size = 60
}
network_interfaces = [stackit_network_interface.vm_app01_nic1.network_interface_id, stackit_network_interface.vm_app01_nic2.network_interface_id]
}One interface per adapter
Each adapter becomes its own interface in the network that replaces its port group, with the address from the export.
The server lists both
network_interfaces holds both interface IDs. In assessment.json the unit depends on both networks, so it moves in the wave after them.
Fixed once created
The documentation says an interface stays linked to its network and keeps its IPv4 address. A wrong prefix or address is therefore a decision to settle before the first apply.
The prefix the export cannot give
Three VMs use the backup port group. Left: their rows. Right: the two variables the draft declares for that network, taken from variables.tf.
VM,NIC label,Adapter,Network,Switch,Connected,IPv4 Address,VM UUID
app01,Network adapter 2,Vmxnet3,PG-Backup-VLAN900,dvs-prod,True,10.10.90.21,4202-vm08-0003
db01,Network adapter 2,Vmxnet3,PG-Backup-VLAN900,dvs-prod,True,10.10.90.31,4202-vm08-0004
jump01,Network adapter 2,Vmxnet3,PG-Backup-VLAN900,dvs-prod,False,10.10.90.5,4202-vm08-0006variable "network_PG_Backup_VLAN900_ipv4_nameservers" {
type = list(string)
description = "IPv4 DNS servers handed out on the network replacing port group PG-Backup-VLAN900 (RVTools does not export them; use the site's DNS servers, reachable from STACKIT)."
}
variable "network_PG_Backup_VLAN900_ipv4_prefix" {
type = string
description = "IPv4 prefix (CIDR) for the network replacing port group PG-Backup-VLAN900. Addresses seen on it: 10.10.90.21, 10.10.90.31, 10.10.90.5."
}Addresses collected for you
The description lists 10.10.90.21, 10.10.90.31 and 10.10.90.5, the addresses seen on the port group. Choose a prefix that contains all of them if the VMs keep their addresses.
Reserved addresses
The STACKIT documentation notes a few reserved addresses per network. Check that none of your fixed addresses falls on one of them.
Name servers from your site
The nameserver variable asks for servers that the new network can reach. Servers with a static guest configuration keep their own.
Where the mapping bites in practice
Addresses are settled early
An interface cannot move to another network and keeps its address. Decide prefix and addresses before the first apply, not during cutover.
Inbound is closed by default
The security group documentation says incoming traffic is blocked unless a rule or a shared group allows it, and outgoing traffic is allowed. Machines that talked freely inside a port group need rules or a common group.
Interfaces pin MAC and IP
With NIC security on, which is the default, an interface accepts only its own MAC and IP pair. A floating or virtual address has to be listed in the allowed addresses (allowed_addresses) of the interface.
Waves follow the networks
Networks are wave 1. A server with several adapters waits for all of its networks; jump01 waits for the management and the backup network.
Default names disappear
Anything that refers to VM Network, a script, a DNS entry or a runbook, needs the new name vm-network or a decision to rename.
Missing sheets hide facts
This run had no vSnapshot and no vMemory sheet. The report warns that snapshot counts and memory reservations are unknown, and each VM carries a snapshot finding marked as not verifiable. Export all sheets.
Settling the networks in order
List the port groups
Read the Network and Switch columns of vNetwork. Every distinct name used by an adapter becomes a network in the draft.
Choose one prefix per network
Use the addresses listed in the variable descriptions as the starting point and decide whether the machines keep their addresses.
Confirm the names
Work through the Platform Architect step: keep the VLAN number in the name if people search for it there, or drop it.
Design the security groups
Write down which flows the old port groups allowed, then express them as groups and rules. Nothing of this comes out of RVTools.
Create networks, then interfaces and servers
Apply in the order of the plan: wave 1 networks, wave 2 interfaces and servers.
Check the adapters after conversion
Legacy adapters and disconnected adapters are the ones to look at first in the guest.
Questions network teams ask
Does a VLAN ID carry over to STACKIT?
No. The assessment reason says VLAN IDs and virtual switches have no meaning on STACKIT. A number inside the port group name is kept only as part of the network name. Separation between networks is built from separate networks and security groups.
Can the VMs keep their IP addresses?
Yes, if the prefix you set contains them. The draft writes each address on its interface. Because an interface keeps its address after creation, settle the prefix first and check that no address collides with the reserved addresses of the network.
Why does the draft not contain a subnet?
The vNetwork sheet holds addresses and no masks, so the run cannot know the range. It declares a variable, lists the addresses seen and opens a step for a Network Architect to set the prefix.
Are distributed firewall rules or NSX segments read?
No. StackToIT reads the vInfo, vDisk, vNetwork, vSnapshot and vMemory sheets. Firewall rules and overlay segments are not in them, so collect them from their own source and plan the STACKIT security groups from that.
Sources
Your next move: STACKIT.
Tell us about your estate. We show you what StackToIT delivers for it: target architecture, Terraform artifacts and a structured migration plan.