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.

Example inputRVTools_tabvNetwork.csv
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-0007
STACKIT Terraform by StackToITterraform/network.tf
resource "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

VMwareSTACKITWhat the run does, and what you decide
Port group, for example PG-App-VLAN120stackit_networkOne 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 IDNo counterpartA 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 counterpartThe 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 maskipv4_prefix, a CIDRRVTools 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 serversipv4_nameserversA 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 1stackit_network_interface in the matching networkThe 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 VMSeveral interfaces on one serverapp01, 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 connectedInterface is still writtenThe 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 E1000Replaced by the guest driversThe 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 policySecurity groups and NIC securityNeither 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.

Example inputRVTools_tabvNetwork.csv
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-0003
STACKIT Terraform by StackToITterraform/compute.tf
resource "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.

Example inputRVTools_tabvNetwork.csv
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-0006
STACKIT Terraform by StackToITterraform/variables.tf
variable "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

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

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

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

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

  5. Create networks, then interfaces and servers

    Apply in the order of the plan: wave 1 networks, wave 2 interfaces and servers.

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