En esta entrada vamos a ver como crear un script para crear un grupo de puertos en todos los host de un servidor vCenter. La función es la misma que vimos en el ejemplo de VMware Orchestrator
El script va a tener 4 parámetros de entrada
- Servidor vCenter
- Nombre del vSwitch donde se va a crear el grupo de puertos
- Nombre del grupo de puertos
- VLAN id
Vamos a describir por pasos como crear el script.
- Obtenemos los parámetros de entrada
param( [string] $vCenter, [string] $vSwitch_Name, [string] $PortGroup_Nombre, [string] $PortGroup_vlanid)
- Cargamos las librerias de VMware
add-pssnapin VMware.VimAutomation.Core
- Nos conectamos al servidor vCenter
$vCenter_Con = Connect-VIServer -Server $vCenter
- Obtenemos todos los servidores ESXi
$ServidoresESXi = Get-VMHost
- Recorremos todos los servidores ESXi creando el grupo de puertos
foreach ($Servidor_ESXi in $ServidoresESXi) {
- Obtenemos el switch virtual
$Servidor_ESXi_vs = Get-VirtualSwitch -VMHost $Servidor_ESXi -Name $vSwitch_Name
- Comprobamos si existe ese grupo de puertos
Get-VirtualPortGroup -VirtualSwitch $Servidor_ESXi_vs | ?{$_.Name -eq $PortGroup_Nombre} | %{$Existe_PG=$TRUE}
- Si no existe el Grupo de Puertos lo creamos
if (!$Existe_PG) {
## Creamos el grupo de Puertos
New-VirtualPortGroup -Name $PortGroup_Nombre -VirtualSwitch $Servidor_ESXi_vs -VLanId $PortGroup_vlanid
Write-Host “Creado el Grupo de Puertos $PortGroup_Nombre en el switch $Servidor_ESXi_vs del servidor $Servidor_ESXi” -ForegroundColor Green
}
- Si ya existe, mostramos un mensaje
elseif ($Existe_PG) {
Write-Host “Ya existe el Grupo de Puertos $PortGroup_Nombre en el switch $Servidor_ESXi_vs del servidor $Servidor_ESXi” -ForegroundColor Cyan
}
- Nos desconectamos del servidor vCenter
DisConnect-VIServer -Server $vCenter -Confirm:$FALSE
Y el contenido completo
12345678910111213141516171819202122232425262728293031323334353637 ## Obtenemos el nombre del servidorparam( [string] $vCenter, [string] $vSwitch_Name, [string] $PortGroup_Nombre, [string] $PortGroup_vlanid)## Cargamos las "librerias" de VMwareadd-pssnapin VMware.VimAutomation.Coreif (($vCenter -eq "") -or($vSwitch_Name -eq "") -or($PortGroup_Nombre -eq "") -or ($PortGroup_vlanid -eq "")){Write-HostWrite-HostWrite-Host "Debes introducir el correctamente los parametros necesarios"Write-Host " powershell.exe crear_port_groups.ps1 vCenter vSwitch_Name PortGroup_Nombre PortGroup_vlanid"Write-HostWrite-Hostexit}foreach ($Servidor_ESXi in $ServidoresESXi) {## Obtenemos el switch virtual$Servidor_ESXi_vs = Get-VirtualSwitch -VMHost $Servidor_ESXi -Name $vSwitch_Name## Comprobamos si existe ese port groupGet-VirtualPortGroup -VirtualSwitch $Servidor_ESXi_vs | ?{$_.Name -eq $PortGroup_Nombre} | %{$Existe_PG=$TRUE}## Si no existe el PortGroup con ese nombre lo creamosif (!$Existe_PG) {## Creamos el grupo de PuertosNew-VirtualPortGroup -Name $PortGroup_Nombre -VirtualSwitch $Servidor_ESXi_vs -VLanId $PortGroup_vlanidWrite-Host "Creado el Grupo de Puertos $PortGroup_Nombre en el switch $Servidor_ESXi_vs del servidor $Servidor_ESXi" -ForegroundColor Green}elseif ($Existe_PG) {Write-Host "Ya existe el Grupo de Puertos $PortGroup_Nombre en el switch $Servidor_ESXi_vs del servidor $Servidor_ESXi" -ForegroundColor Cyan}}## Nos desconectamos del servidor vCenterDisConnect-VIServer -Server $vCenter -Confirm:$FALSE
Para ejecutar el script unicamente le tenemos que pasar los parámetros.
crear_port_group_hosts.ps1 vCenter vSwitch0 Portgroup10 10
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?