Vamos con el segundo post de la serie de automatización de procesos sobre vDS con PowerCLI. En este post, vamos a ver varios procesos importantes, que podemos integrar en un script de configuración masiva de esxi. En el anterior post, vimos cómo asignar interfaces de red de los ESXi a los Uplinks del vDS en orden. En este post, vamos a ver cómo asignar un interfaz a un Uplink en concreto. Lo vamos a ver, como proceso para poder realizar la migración del vmkernel de management de nuestros esxi de vSS a vDS.
Primero, vamos a ponernos en situación para tratar de entenderlo. En la siguiente imagen podemos ver la foto inicial de nuestro entorno. Tenemos por ejemplo, 3 ESXi, con dos interfaces de red cada uno, en este caso, sería tras una instalación y configuración básica de los ESXi, en la cual la vmnic0, estuviera añadida al vSwitch Standard, con un vmkernel para MGMT. La vmnic1 no está asignada aún. También, ya tenemos creado nuestro vDS, con 2 Uplinks. En el post anterior, vimos como añadir Host ESXi a nuestro vDS.

Lo primero, es crear nuestro vDPortgroup que posteriormente asignaremos cuando migremos el vmkernel de MGMT de nuestro ESXi. Para ello, ejecutaremos el siguiente comando:
$VDS = Get-VDSwitch -Name «vDS-J2K-Mgmt»
$pg_mgmt = New-VDPortgroup -VDSwitch $VDS -Name «vDP-J2K-Mgmt» | Out-Null #-VlanId $id_vlan
También vamos a configurar el Teaming Policy para nuestro vDPortgroup. Primero, dejaremos como activo, el Uplink2, ya veremos el por qué. Para ello:
Get-VDSwitch $VDS | Get-VDPortgroup -Name | Get-VDUplinkTeamingPolicy |Set-VDUplinkTeamingPolicy -ActiveUplinkPort ‘dvUplink2’ -StandbyUplinkPort ‘dvUplink1’ -LoadBalancingPolicy LoadBalanceSrcId

El siguiente paso, será asignar la vmnic1 de nuestros ESXi al Uplink2. Lo haremos de la siguiente manera, utilizando la siguiente función
**Si queremos hacerlo para todos los ESXi, llamaremos a esta función desde un bucle para cada ESXi.
function Migrate-MGMT ([string]$esxName,[string]$vdsName) { $pnicName = 'vmnic1' $uplinkName = 'dvUplink2' $esx = Get-VMHost -Name $esxName $vds = Get-VDSwitch -Name $vdsName -VMHost $esx Write-Host "Adding first uplink of ESXi $esx .... to vDS $vds -->" -NoNewline $uplinks = Get-VDPort -VDSwitch $vds -Uplink | where {$_.ProxyHost -like $esxName} $netSys = Get-View -Id $esx.ExtensionData.ConfigManager.NetworkSystem $config = New-Object VMware.Vim.HostNetworkConfig $proxy = New-Object VMware.Vim.HostProxySwitchConfig $proxy.Uuid = $vds.ExtensionData.Uuid $proxy.ChangeOperation = [VMware.Vim.HostConfigChangeOperation]::edit $proxy.Spec = New-Object VMware.Vim.HostProxySwitchSpec $proxy.Spec.Backing = New-Object VMware.Vim.DistributedVirtualSwitchHostMemberPnicBacking $pnic = New-Object VMware.Vim.DistributedVirtualSwitchHostMemberPnicSpec $pnic.PnicDevice = $pnicName $pnic.UplinkPortKey = $uplinks | where{$_.Name -eq $uplinkName} | Select -ExpandProperty Key $proxy.Spec.Backing.PnicSpec += $pnic $config.ProxySwitch += $proxy $netSys.UpdateNetworkConfig($config,[VMware.Vim.HostConfigChangeMode]::modify) | Out-Null Write-Host "[OK] Added first dvUplink to vDS $vds" -fo Green }
Tras lanzar la función, estaremos en la siguiente situación:

Lo siguiente sería, migrar el vmkernel de Mgmt a nuestro vDS. Para ello ejecutaremos lo siguiente:
# Migrate VMkernel Management to VDS - Modify vmk number Write-Host "Migrating vmkernel to" $VDS -fo Yellow -NoNewline $DPG = Get-VDPortgroup -name "vDP-J2K-Mgmt" -VDSwitch $VDS $VMK = Get-VMHostNetworkAdapter -Name vmk0 -VMHost $ESXi Set-VMHostNetworkAdapter -PortGroup $DPG -VirtualNic $VMK -confirm:$false | Out-Null Write-Host "[OK] Migrated vmkernel to" $VDS -fo Green

Por último, nos quedaría migrar la vmnic0 de cada ESXi al Uplink de nuestro vDS. Para ello:
# Migrate vmnic0 to VDS - After migrate vmk0 Write-Host "Adding vmnic0 to" $VDS -fo Yellow -NoNewline $VMNIC = Get-VMHost $ESXi | Get-VMHostNetworkAdapter -Physical -Name vmnic0 $VDS | Add-VDSwitchPhysicalNetworkAdapter -VMHostNetworkAdapter $VMNIC -Confirm:$false Write-Host "[OK]" -fo Green
Y la foto que nos quedaría sería la siguiente:

Y ya para terminar de manera elegante, eliminaremos el vSwitch Standard que ya no lo utilizaremos y reconfiguraremos el Teaming Policy del vDPortgroup de Mgmt.
# Remove Old vSwitch - Change vSwitch to remove #Store old standard vSwitch $VSS = Get-VirtualSwitch -VMHost $ESXi -Name "vSS0" Write-Host "Removing old standard switch" -fo Yellow -NoNewline Remove-VirtualSwitch -VirtualSwitch $VSS -confirm:$false Write-Host "[OK]" -fo Green # Reconfigure the Failover Uplinks to vDPortgroup vDP-J2K-Mgmt Write-Host "Reconfiguring Teaming Failover for MGMT..." -fo Yellow Get-VDSwitch $VDS | Get-VDPortgroup -Name "vDP-J2K-Mgmt" | Get-VDUplinkTeamingPolicy |Set-VDUplinkTeamingPolicy -ActiveUplinkPort 'dvUplink1','dvUplink2' Write-Host "[OK]" -fo Green -NoNewline

Espero que os sea de ayuda! En el próximo post de la serie veremos como configurar vMotion bajo vDS para crear MultiNIC vMotion y también veremos como configurar TCP-Netstack para Cross vCenter vMotion bajo vDS.
Comparte si te gusta 🙂