This script connect to vCenter Server and create a vSwitch Standard for using iSCSI network in three VMware ESXi hosts. Are used two network interfaces and three VMKernels (iSCSI01, iSCSI02 and Storage Heartbeat). To run the script you need the VMware PowerCLI, hostname or IP and administrator access credentials vCenter Server, hostname or IP of the ESXi servers, nomenclature for the vSwitch, VMKernels IP and iSCSI network. You must also define which network interfaces assigned to this vSwitch, besides the possibility of set the MTU. The script also enables a network interface for a VMkernel, while the other interface is unused.
Below are some details of the script:
######################### General Setup ###########################
$vcenter_name = "rc-vc01.rc.local"
$vswitch_name = "iSCSI"
$portgroup1_name = "iSCSI01"
$portgroup2_name = "iSCSI02"
$portgroup3_name = "StorageHeartbeat"
$device_nic1 = "vmnic2"
$device_nic2 = "vmnic3"
$mtu_value = "9000"
$network_mask = "255.255.255.0"
########################## VMware ESXi 1 ##########################
$esxi1_name = "rc-esxi01.rc.local"
$ip_portgroup1_esxi1 = "10.0.0.11"
$ip_portgroup2_esxi1 = "10.0.0.21"
$ip_portgroup3_esxi1 = "10.0.0.31"
# Conect to vCenter Server
Connect-VIServer $vcenter_name
# Create vSwitch in ESXi Hosts
Foreach ($vmhost in (get-vmhost))
{
New-VirtualSwitch -VMHost $vmhost -Name $vswitch_name -Nic $device_nic1,$device_nic2 -MTU $mtu_value
}
########################## VMware ESXi 1 ##########################
New-VMHostNetworkAdapter -VMHost $esxi1_name -PortGroup $portgroup1_name -VirtualSwitch $vswitch_name -IP $ip_portgroup1_esxi1 -SubnetMask $network_mask -FaultToleranceLoggingEnabled:$false -ManagementTrafficEnabled:$false -VsanTrafficEnabled:$false -VMotionEnabled:$false -Mtu $mtu_value
New-VMHostNetworkAdapter -VMHost $esxi1_name -PortGroup $portgroup2_name -VirtualSwitch $vswitch_name -IP $ip_portgroup2_esxi1 -SubnetMask $network_mask -FaultToleranceLoggingEnabled:$false -ManagementTrafficEnabled:$false -VsanTrafficEnabled:$false -VMotionEnabled:$false -Mtu $mtu_value
New-VMHostNetworkAdapter -VMHost $esxi1_name -PortGroup $portgroup3_name -VirtualSwitch $vswitch_name -IP $ip_portgroup3_esxi1 -SubnetMask $network_mask -FaultToleranceLoggingEnabled:$false -ManagementTrafficEnabled:$false -VsanTrafficEnabled:$false -VMotionEnabled:$false -Mtu $mtu_value
Get-VirtualPortGroup -VMHost $esxi1_name -Name $portgroup1_name | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicActive $device_nic1 -MakeNicUnused $device_nic2
Get-VirtualPortGroup -VMHost $esxi1_name -Name $portgroup2_name | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicActive $device_nic2 -MakeNicUnused $device_nic1
You can edit the script to use more or fewer hosts, network interfaces and VMKernels. Feel free to edit it according to your need.
Script download: EN-Create-vSwitch-iSCSI.ps1
References: