【问题标题】:Get IPs of vCenter networks using pyVmomi使用 pyVmomi 获取 vCenter 网络的 IP
【发布时间】:2018-01-22 16:32:35
【问题描述】:

我使用 pyVmomi 在我们的 vCenter 上创建虚拟机。我们有一些网络,例如“PRD-DB”。我可以使用 pyVmomi 将 VM 的网络接口更改为“PRD-DB”。

我知道这个网络地址是 10.125.10.0/24。但我找不到使用 pyVmomi 获取此网络 IP 地址的方法。什么将 IP 链接到网络?

[编辑] 更准确地说:如何检索可用 VLAN 列表,我可以将其分配给 VM 的网卡?我可以检索这些 VLAN 对应的网络地址吗?

【问题讨论】:

    标签: python vmware pyvmomi


    【解决方案1】:

    您是否只是想获取每个虚拟机的 IP 地址?

    如果是这样,您可以使用 vim.VirtualMachine 上的 CreateContainerView 通过来宾对象从您的 vCentre 获取每个 VM 的 IP 地址。尽管您需要安装 VMWare 工具来收集来宾对象中的大部分信息。

    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)
    

    如果您尝试采用更高级的方法,我建议您遵循 vmware github 页面上提供的 getvnicinfo.py 示例。这实际上是通过更详细的视图获取每个 VM 的信息。虽然这似乎没有提供 IP 地址。

    要查看主机的可用 vlan,请按照以下示例进行操作。

    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
    

    【讨论】:

    • 其实不,我已经知道如何遍历所有虚拟机并检索它们的信息。我想获取 vCenter 上可用网络的列表。例如,当我使用 vMware Web 界面创建 VM 时,我将网络 (vlan) 分配给 VM 网卡,为此我在列表中选择 vlan。我想使用 pyVmomi 从 Python 中检索该列表,包括 vlan 的名称和网络地址。所以我可以对虚拟机说:你有这个 IP,所以你在 vlan XXX 中。
    • 我没有将 vlan 与我环境中的 IP 地址相关联。所以我不确定我是否可以帮助你。我只能通过每个主机上的 DistributedVirtualSwitch 找到 vlan 名称。然后遍历每个交换机中的每个端口组以获取我用端口组代码示例更新我之前的答案的名称
    猜你喜欢
    • 1970-01-01
    • 2020-03-07
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 2012-08-10
    • 2022-01-03
    相关资源
    最近更新 更多