Desconecte a NIC na VM desligada

Desconecte a NIC na VM desligada

Estou usando ESXi 6.0 e PowerCLI. Criei um clone de uma VM de produção:

$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)

Meu MyProductionServer possui um endereço IP estático definido no lado do sistema operacional. Se eu iniciar o $ Cloned_VM terei um IP duplicado na mesma sub-rede. O que eu gostaria de fazer é DESCONECTAR a NIC na VM clonada antes de iniciar esta.

O que descobri é:

1) Em uma VM ligada:

Get-NetworkAdapter -VM $Cloned_VM | Set-NetworkAdapter -Connected:$false -StartConnected:$false -Confirm:$false

Isso está funcionando, mas não posso fazer isso devido ao estado da VM clonada.

2) Remova a NIC da 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)

Fonte:https://communities.vmware.com/thread/454525

Isso também está funcionando, mas não é exatamente o que eu gostaria.

Gostaria de DESCONECTAR a NIC atual para permitir inicializar a VM clonada, alterando o endereço IP e depois CONECTAR a NIC (+ reinicialização) para que a VM clonada funcione com outro endereço IP.

Em palavras simples, eu gostaria de fazer 1) em uma VM desligada. Isso é possível ?

Responder1

Então, testei isso no ambiente de teste e 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 tudo bem, verei isso mais tarde no ambiente Pré-Prod :)

informação relacionada