Creación de vm automatizado – PowerCli

Hola de nuevo!

Os traigo el script en PowerCli para desplegar máquinas virtuales de forma masiva.

Necesitais un .csv con los siguientes campos alojado en el mismo path del script.

No meja ponerlos en una sola linea pero estos son los titulos para las columnas del csv

vCenter Template Cluster VMName Notas
Ipaddr Subnet Gateway Vlan Customization Ram
VirtualCPUtotal SocketCoreDown

Y este es el script:

 


 

cls
 Write-host "#########################################################################################################" -foregroundcolor green
 # Cabecera Ayuda.
 Write-host
 {
 ################################################
 ##    IMFORMACION PREVIA  (Alta de maquina)   ##
 ################################################

1.Rellenar el archivo vmWindows.csv
 Template: Plantilla
 Datastore: DTS donde alojar la VM
 Vmhost: Host ESXi donde alojar la VM
 Customization: Custom con toda la configuracion
 Vmname: Nombre de VM
 Ipaddr: IP de VM
 Subnet: Mascara subred
 Gateway: Puerta de enlace
 Pdns: DNS
 Vlan: VLAN ID
 Ram: Memoria RAM
 VirtualCPUtotal: CPUs Total
 SocketCoreDown: Cores por procesador (desplegable de abajo en el "Edit Settings")

2.Conectate al VCENTER

3.Una vez terminado el script, esperar a que cada maquina haga el sysprep, duracion 10 min aprox.

4.La maquina contestara a ping y cuando nos logemos la primera vez entrara en dominio e instalara los agentes (Se reiniciara sola)

5.Despues ya podremos hacer la siguiente operativa:
 5.1Revisar vmTools.
 5.2Revisar el HOST y Datastore

}

Write-host "#########################################################################################################" -foregroundcolor green
 Read-Host "--> Si estas seguro de todos los pasos pulsa ENTER para continuar... (Si no, CTRL+C)"

#Declaración de variables
 $vmlist = Import-CSV -Delimiter ";" vmWindowsv2.csv
 foreach ($item in $vmlist)
 {
 # Mapeo de las variables con los datos del CSV
 $Cluster = $item.cluster
 $Template = $item.template
 $customization = $item.customization
 $vmname = $item.vmname
 $ipaddr = $item.ipaddr
 $subnet = $item.subnet
 $gateway = $item.gateway
 $pdns ="****"
 $vlan = $item.vlan
 $RAM = $item.ram
 $virtualCPUtotal = $item.virtualCPUtotal
 $socketCoreDown = $item.socketCoreDown
 $disksize = 40 + $RAM
 $notas = $item.Notas
 $env = $vmname.Substring(1,4)
 $s = "S"
 $v = "*"
 $server= "$s$env$v"

$esx = Get-Cluster $Cluster | Get-VMHost -name $server
 $vmhost = $esx | Get-Random

if ($env -eq "****") {
 $Luns = Get-Datastore  -vmhost $vmhost | where {$_.Name -LIKE "****" -AND $_.FreeSpaceMB -gt 600000}
 $datastore = $luns | Get-Random

}
 else {

$Luns = Get-Datastore  -vmhost $vmhost | where {$_.Name -LIKE "****" -AND $_.FreeSpaceMB -gt 600000}
 $datastore = $luns | Get-Random

}

Write-host Generando instalacion para $item.vmname -foregroundcolor yellow
 $item
 Write-host Tamaño disco C: $disksize -foregroundcolor yellow
 Write-host Host: $vmhost -foregroundcolor yellow
 Write-host Datastore: $datastore -foregroundcolor yellow
 Write-host
 Write-host Clonando maquina... -foregroundcolor green

Get-oscustomizationspec $customization | Get-OSCustomizationNicMapping | where {$_.Position -eq 1}| Set-OSCustomizationNicMapping -IpMode UseStaticIp -IpAddress $ipaddr -SubnetMask $subnet -DefaultGateway $gateway -dns $pdns | out-null

#Comando para la clonación
 New-VM -Name $vmname -Template $Template -Datastore $datastore -VMHost $vmhost | Set-VM -OSCustomizationSpec $customization -RunAsync  -Confirm:$false

#Configuramos VLAN
 $eth1 = Get-NetworkAdapter -vm $vmname | where {$_.name -eq "Network Adapter 1"}| Set-NetworkAdapter -NetworkName $vlan -Confirm:$false | out-null

#Ampliacion disco C
 Get-HardDisk $vmname | where {$_.Name -eq "hard disk 1"} | Set-HardDisk -CapacityGB $disksize -Confirm:$false | out-null

#Configuramos RAM y CPU
 Write-host Configuramos RAM y CPU -foregroundcolor yellow
 $RAM = Set-VM $vmname -MemoryGB $ram -Confirm:$false
 $spec=New-Object –Type VMware.Vim.VirtualMAchineConfigSpec –Property @{“NumCoresPerSocket” = $socketCoreDown}
 (Get-VM –Name $vmname).ExtensionData.ReconfigVM_Task($spec)
 get-vm $vmname | set-vm -numcpu $virtualCPUtotal -Confirm:$false

#Plantilla Usada
 Set-VM $vmname -Description $notas -Confirm:$false | out-null

# Actualizamos HW
 # Comprobamos versión esxi
 $HWversion = Get-VMHost $vmhost | select | % {$_.version}

#######################################
 ##   ESXi version  |   HW Version    ##
 ##        ESXi 6.0    |        11          ##
 ##        ESXi 5.5     |        10          ##
 ##        ESXi 5.1     |        9          ##
 ##        ESXi 5.0     |        8          ##
 #######################################

write-host Version del esxi $HWversion -foregroundcolor green
 $hwstr6= $HWversion.Substring(0,1)
 $hwstr5= $HWversion.Substring(2,1)

if ($hwstr5 -eq 1) {Set-VM -VM $vmname -Version v10 -Confirm:$false | out-null}    # 5.1.0
 if ($hwstr5 -eq 5) {Set-VM -VM $vmname -Version v10 -Confirm:$false | out-null}    # 5.5.0
 if ($hwstr6 -eq 6) {Set-VM -VM $vmname -Version v11 -Confirm:$false | out-null}    # 6.0.0

$HWvm = Get-VM $vmname | select | % {$_.version}

write-host
 write-host Se actualiza el hw de la maquina a la ultima version -foregroundcolor green
 write-host El HW actual de la máquina es: $HWvm -foregroundcolor green
 write-host

#Arrancamos la maquina

Start-VM -VM $vmname | out-null
 write-host "  --> Maquina creada y arrancada"    -foregroundcolor green
 write-host

}

Write-host --> Finaliza el alta de maquinas -foregroundcolor green

———————————————————————————

 

 

 

 

 

 

 

Deja un comentario