Agregar y eliminar PortGroup con script

Buenas, 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 virtuasingle-port-groupl. 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
}
}

Bueno, espero que os haya gustado 😉

Muchas gracias por compartir.

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInBuffer this pageEmail this to someonePrint this page

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *