siguiendo con la línea de Scripting que tan útil es, voy a aportar un par de scripts que resultan muy útiles. Quien no se ha encontrado alguna vez con la impediosa y pesada tarea de tener que crear PortGroup de forma masiva entre los ESXi de un cluster. Pues os voy a aportar unos scripts para poder automatizar las tareas de creación y eliminación de PortGroup de manera escalada en los ESXi de nuestro Cluster.
Primero aclarar a que nos referimos con PortGroup. En VMware se nombra PortGroup a un objeto dentro de nuestra infraestructura que se crea dentro de Switch Virtual, ya sea vSS (vSwitch Standard) o vDS (vSwitch Distributed), con el fin de agrupar puertos con una configuración común. De manera que agregando un PortGroup a un vSwitch, nos permite segmentar la red dentro de un switch virtual. Posteriormente se agregan las VMs a los PortGroup mediante las tarjetas de red virtuales de cada VM. Indicar que los PortGroup deben de tener un nombre o “label network”, deben de tener también un VLAN ID, que dependiendo de la configuración externa (Hardware de Red), deberá de ir taggeada. También podemos configurar a la hora de crear el PortGroup la Seguridad (Promiscuous Mode, Mask Address Changes, Forged Transmit).En cuanto a Traffic Shaping podemos configurar como medida de control de tráfico inyectado a la red. Por último, podemos a través de NIC Teaming configurar Failover de NICs y en caso de tener algún problema alguna vmnic asignada al vSwitch, actuar según convenga.
- Agregar PortGroup a vSwitch existente
Para poder lanzar el script, le pasaremos como parámetros, el Virtual Center, el Cluster, el vSwitch, label PortGroup y el VLAN ID.
#Agregar PortGroup a Cluster ESXi param( [Parameter(Mandatory=$True)] [string]$vCenterName, [Parameter(Mandatory=$True)] [string]$ClusterName, [Parameter(Mandatory=$True)] [string]$VSwitch, [Parameter(Mandatory=$True)] [string]$NamePortGroup, [Parameter(Mandatory=$True)] [string]$NumIDVLAN ) # Hay que añadir esta línea cuando se llama a PowerCli desde PowerShell de Windows. Add-PSSnapin VMware.VimAutomation.Core # CREDENCIALES $USER = 'USERNAME CON PERMISOS' $PASS = 'AQUI INTRODUCIMOS LA PASS' # Conexión a Virtual Center en PowerCli Connect-VIServer -server $vCenterName -user $USER -password $PASS |out-null $Cluster = Get-Cluster $ClusterName write-host $TargetHost = $Cluster | Get-VMHost Foreach ($vmhost in $TargetHost){ $vswitchnuevo = Get-VirtualSwitch -VMHost $vmhost -Name $VSwitch New-VirtualPortGroup -VirtualSwitch $vswitchnuevo -Name $NamePortGroup -VLanID $NumIDVLAN }
- Eliminar PortGroup a vSwitch existente
Para poder lanzar el script, le pasaremos como parámetros, el Virtual Center, el Cluster, el vSwitch, label PortGroup.
#Eliminar PortGroup en Cluster param( [Parameter(Mandatory=$True)] [string]$vCenterName, [Parameter(Mandatory=$True)] [string]$ClusterName, [Parameter(Mandatory=$True)] [string]$VSwitch, [Parameter(Mandatory=$True)] [string]$NamePortGroup ) # Hay que añadir esta línea cuando se llama a PowerCli desde PowerShell de Windows. Add-PSSnapin VMware.VimAutomation.Core # CREDENCIALES $USER = 'USERNAME CON PERMISOS' $PASS = 'AQUI INTRODUCIMOS LA PASS' # Conexión a Virtual Center en PowerCli Connect-VIServer -server $vCenterName -user $USER -password $PASS #|out-null $Cluster = Get-Cluster $ClusterName write-host $TargetHost = $Cluster | Get-VMHost # Para cada Host del Cluster se eliminará la VLAN pasada con el ID Especificado Foreach ($VMHost in $TargetHost) { $HOST_STATE = get-vmhost -name $VMHost $CONNECTIONSTATE = $HOST_STATE.connectionstate # Para cada Host, comprueba si su estado es Connected o Maintenance y eliminará el portgroup, sino lo obviará. if ($CONNECTIONSTATE -like "Maintenance" -or $CONNECTIONSTATE -like "Connected"){ $virtualPortGroup = Get-VirtualPortGroup -VMHost $vmhost -VirtualSwitch $VSwitch -Name $NamePortGroup Remove-VirtualPortGroup -VirtualPortGroup $virtualPortGroup -Confirm:$False } }