Adicionar VM à VLAN por meio de pyvmomi/vSphere
Pergunta
Eu vasculhei os documentos (http://pubs.vmware.com/vsphere-55/index.jsp) e não consigo encontrar nada sobre como adicionar máquinas virtuais a vlans.Há muitas informações sobre como criá-los e configurá-los, mas não sobre como adicionar máquinas virtuais a eles por meio de pyvmomi (ou esxcli, se necessário).Tenho certeza de que isso pode ser feito, pois você pode fazer isso facilmente por meio do cliente vSphere, mas pretendo fazer isso de forma automatizada.
Solução
O código de https://github.com/rreubenur/vmware-python-examples/blob/master/clone_vm_on_each_host/reconfigure_vnics.py acabou me ajudando muito:
nicspec = vim.vm.device.VirtualDeviceSpec()
nicspec.operation = vim.vm.device.VirtualDeviceSpec.Operation.add
nicspec.device = nic_type
nicspec.device.wakeOnLanEnabled = True
nicspec.device.deviceInfo = vim.Description()
nicspec.device.backing = vim.vm.device.VirtualEthernetCard.NetworkBackingInfo()
nicspec.device.backing.network = self.get_obj(content, [vim.Network], net_name)
nicspec.device.backing.deviceName = net_name
nicspec.device.connectable = vim.vm.device.VirtualDevice.ConnectInfo()
nicspec.device.connectable.startConnected = True
nicspec.device.connectable.allowGuestControl = True
devices.append(nicspec)
vmconf = vim.vm.ConfigSpec(deviceChange=devices)
Permitiu-me criar o objeto de configuração adequado para conectar-me a uma rede virtual em um switch padrão.
nic_type é o tipo de dispositivo de rede (e1000, pc32, etc.), net_name é o nome da rede (portgroup).O resto é bastante autoexplicativo.