Получить IP-адреса сетей vCenter с помощью pyVmomi

Я использую pyVmomi для создания виртуальной машины на нашем vCenter. У нас есть несколько сетей, таких как «PRD-DB». Я могу изменить сетевой интерфейс виртуальной машины на «PRD-DB», используя pyVmomi.

Я знаю, что этот сетевой адрес 10.125.10.0/24. Но я не могу найти способ получить этот сетевой IP-адрес с помощью pyVmomi. Что связывает IP-адреса с сетями?

[EDIT] Чтобы быть более точным: как я могу получить список доступных VLAN, которые я могу назначить сетевой карте виртуальной машины? И могу ли я получить сетевые адреса, соответствующие этим VLAN?


person Jean Coiron    schedule 22.01.2018    source источник


Ответы (1)


Вы пытаетесь просто получить IP-адрес для каждой виртуальной машины?

Если это так, вы можете использовать CreateContainerView на vim.VirtualMachine, чтобы получить IP-адреса каждой виртуальной машины из вашего vCentre через гостевой объект. Хотя вам потребуется установить VMWare Tools, чтобы собрать большую часть информации в гостевом объекте.

serviceInstance = SmartConnect(host=host,user=user,pwd=password,port=443)
atexit.register(Disconnect, serviceInstance)
content = serviceInstance.RetrieveContent()
vm_view = content.viewManager.CreateContainerView(content.rootFolder,[vim.VirtualMachine],True)

# Loop through the vms and print the ipAddress
for vm in vm_view.view:
    print(vm.guest.ipAddress)

Если вы пытаетесь применить более продвинутый подход, я бы рекомендовал следовать getvnicinfo.py представлен на странице vmware github. Это фактически проходит через более подробное представление, получая информацию для каждой виртуальной машины. Хотя это, похоже, не предоставляет IP-адрес.

Чтобы просмотреть доступные вланы для хоста, следуйте приведенному ниже примеру.

hosts = content.viewManager.CreateContainerView(content.rootFolder,[vim.HostSystem],True) 
for host in hosts.view:
    for network in host.network:
        switch = network.config.distributedVirtualSwitch
        for portgroup in switch.portgroup:
            print(portgroup.name) # This will print the vlan names
person woody1990    schedule 07.11.2018
comment
На самом деле нет, я уже знаю, как просмотреть все виртуальные машины и получить их информацию. Я хотел бы получить список доступных сетей на vCenter. Например, когда я создаю виртуальную машину с помощью веб-интерфейса vMware, я назначаю сеть (vlan) сетевой карте виртуальной машины и для этого выбираю влан в списке. Я хочу получить этот список из Python с помощью pyVmomi, включая имя vlan и сетевой адрес. Так что я могу сказать для ВМ: у вас есть этот IP, значит, вы находитесь в vlan XXX. - person Jean Coiron; 07.11.2018
comment
Я не связываю вланы с IP-адресами в своей среде. Так что я не уверен, смогу ли я вам помочь. Я могу только найти имя vlan с помощью DistributedVirtualSwitch на каждом хосте. затем прокрутите каждую группу портов в каждом коммутаторе, чтобы получить имена, которые я обновил в своем предыдущем ответе с примером кода группы портов. - person woody1990; 09.11.2018