Estoy usando ESXi 6.0 y PowerCLI. Creé un clon de una VM de producción:
$Source_VM = Get-VM -Name "MyProductionServer"
$Target_VMHost = Get-VMHost -VM $Source_VM
$Cloned_VM = (New-VM -Name "MyPreProdServer" -VM $Source_VM -VMHost $Target_VMHost)
Mi MyProductionServer tiene una dirección IP estática configurada en el lado del sistema operativo. Si inicio $Cloned_VM tendré una IP duplicada en la misma subred. Lo que me gustaría hacer es DESCONECTAR la NIC en la VM clonada antes de iniciar esta.
Lo que he encontrado es:
1) En una máquina virtual encendida:
Get-NetworkAdapter -VM $Cloned_VM | Set-NetworkAdapter -Connected:$false -StartConnected:$false -Confirm:$false
Esto está funcionando, pero no puedo hacerlo debido al estado de la VM clonada.
2) Retire la NIC de la VM:
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$spec.deviceChange = New-Object VMware.Vim.VirtualDeviceConfigSpec
$spec.deviceChange[0].Operation = "Remove"
$spec.DeviceChange[0].Device = $Cloned_VM.ExtensionData.Config.Hardware.Device | ?{$_.DeviceInfo.Label -eq "Network adapter 1"}
$Cloned_VM.ExtensionData.ReconfigVM_Task($spec)
Fuente:https://communities.vmware.com/thread/454525
Esto también funciona, pero no es exactamente lo que me gustaría.
Me gustaría DESCONECTAR la NIC actual para permitirme iniciar la VM clonada, cambiar la dirección IP y luego CONECTAR la NIC (+ reiniciar) para que la VM clonada funcione con otra dirección IP.
En palabras simples, me gustaría hacer lo 1) en una máquina virtual apagada. Es eso posible ?
Respuesta1
Así que probé esto en un entorno de prueba y está funcionando.
# Saving the NIC
$Saved_NIC = $Cloned_VM.ExtensionData.Config.Hardware.Device | ?{$_.DeviceInfo.Label -eq "Network adapter 1"}
# Removing the NIC
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$spec.deviceChange = New-Object VMware.Vim.VirtualDeviceConfigSpec
$spec.deviceChange[0].Operation = "Remove"
$spec.DeviceChange[0].Device = $Saved_NIC
$Cloned_VM.ExtensionData.ReconfigVM_Task($spec)
# Modifying my VM (boot + launch script + poweroff)
# Adding the NIC
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$spec.deviceChange = New-Object VMware.Vim.VirtualDeviceConfigSpec
$spec.deviceChange[0].Operation = "Add"
$spec.DeviceChange[0].Device = $Saved_NIC
$Cloned_VM.ExtensionData.ReconfigVM_Task($spec)
# Boot again my VM and test to reach the internet: WORKING!
Start-VM -VM $Cloned_VM
Parece estar bien, lo veré más adelante en el entorno de preproducción :)