esxi/standard-network-mappings¶
Set the ESXi software install acceptance level.
This Param defines the structure of a more complete Standard vswitch/portgroup constructs on an ESXi host. The following standard ESXi network elements can be configured:
- vswitch
- vswitch port count
- vswitch MTU
- vswitch VMNIC uplinks
- portgroups
- portgroup vlan
- portgroup VMK interfaces
- portgroup VMK addressing (static, dhcp)
- portgroup tag usage (eg Management, VSAN, etc)
- portgroup uplink failover configuration (overriding the vswitch config values)
The backing task that processes this data structures works very hard to try and resolve issues to drive an ESXi host to the declared configuration. However, there are some limitations in the code:
- primarily only net-new configurations will be built
- artifacts will not be removed if they are not defined here
- some network objects will not reconfigure if they already exist
- if a network object is in use, it will fail to be reconfigured
These configuration changes are only supported on freshly built ESXi hosts that do not yet have any Virtual Machines consuming any of the network components. Any VM using the vSwitches or Portgroups will prevent the Task from reconfiguring the network topology of the system.
The primary goal of this Param data structure is to define the vSwitches and Portgroups that should be added to an ESXi host with it's accompanying vmnic configuration, VMKs, and VLAN mappings.
The Param structure is interpreted by the .ParamExpand
golang template
construct which means that some golang templating can be used to create a
more reusable and dynamic data structure. The below example shows this for the
static IP address assignments to reuse the existing last Octet from the
DRP Machine Objects .Machine.Address
field.
Please see the JSON Schema stanza for the structure definitions and explicit options that are supported by them.
Example in YAML:
vSwitch0:
mtu: 1500
ports: 128
uplinks:
- vmnic0
portgroups:
Management Network:
vlan: 0
vmk:
name: vmk0
type: dhcp
tagname: Management
vSwitch1:
mtu: 1500
uplinks:
- vmnic2
- vmnic3
failover:
active_uplinks:
- vmnic2
- vmnic3
- vmnic4
failback: true
failure_detection: beacon
load_balancing: iphash
notify_switches: true
standby_uplinks:
- vmnic4
portgroups:
VM Network:
migrate: true
vlan: 2
vmk:
name: vmk1
type: static
address: 10.10.2.{{ last ( splitList "." ( .Machine.Address | toString ) ) }}
netmask: 255.255.255.0
gateway: 10.10.2.1
VSAN:
vlan: 3
failover:
load_balancing: mac
use_vswitch: true
vmk:
name: vmk2
type: static
address: 10.10.3.{{ last ( splitList "." ( .Machine.Address | toString ) ) }}
netmask: 255.255.255.0
gateway: 10.10.3.1
tagname: vSAN
Example in JSON:
{
"vSwitch0": {
"mtu": 1500,
"uplinks": [ "vmnic0" ],
"ports": 128,
"portgroups": {
"Management Network": {
"vlan": 0,
"vmk": {
"name": "vmk0",
"type": "dhcp",
"tagname": "Management"
}
}
}
},
"vSwitch1": {
"mtu": 1500,
"uplinks": [ "vmnic2", "vmnic3", "vmnic4" ],
"ports": 512,
"failover": {
"active_uplinks": [ "vmnic2", "vmnic3" ],
"failback": true,
"failure_detection": "beacon",
"load_balancing": "iphash",
"notify_switches": true,
"standby_uplinks": [ "vmnic4" ]
},
"portgroups": {
"VM Network": {
"migrate": true,
"vlan": 2,
"vmk": {
"name": "vmk1",
"type": "static",
"address": "10.10.2.{{ last ( splitList \".\" ( .Machine.Address | toString ) ) }}",
"netmask": "255.255.255.0",
"gateway": "10.10.2.1"
}
},
"VSAN": {
"vlan": 3,
"failover": {
"load_balancing": "mac",
"use_vswitch": true
},
"vmk": {
"name": "vmk2",
"type": "static",
"address": "10.10.3.101",
"address": "10.10.3.{{ last ( splitList \".\" ( .Machine.Address | toString ) ) }}",
"netmask": "255.255.255.0",
"gateway": "10.10.3.1",
"tagname": "vSAN"
}
}
}
}
}