You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调用VMware API实现虚拟机标签与IP地址的关联查询

实现VMware虚拟机标签与IP地址关联的方案

存在可实现该需求的API,你只需要组合vSphere REST API的两类接口返回结果,即可完成标签与虚拟机IP的关联匹配。

核心逻辑

你当前调用的cis/tagging/tag接口仅能返回所有标签的元数据,无法直接得到标签和资源的绑定关系。需要组合三类接口的返回结果做映射:

  1. 标签元数据接口:获取标签ID和标签内容(如app=db)的对应关系
  2. 标签关联接口:获取每个标签绑定的虚拟机资源ID
  3. 虚拟机清单接口:获取虚拟机ID和对应IP地址的映射关系

具体实现步骤

步骤1:处理标签元数据映射

你现有的代码已经拿到了所有标签ID,进一步处理为标签ID:标签内容的映射字典,方便后续查询:

vsession = self.vCenterSession()
all_tags = vsession.get('https://10.156.0.10/rest/com/vmware/cis/tagging/tag')
all_tags_py = json.loads(all_tags.text)['value']

# 构建标签ID与标签内容的映射
tag_map = {}
for tag_id in all_tags_py:
    tag_detail = json.loads(vsession.get(f'https://10.156.0.10/rest/com/vmware/cis/tagging/tag/id:{tag_id}').text)['value']
    tag_map[tag_id] = tag_detail['name']

步骤2:查询标签绑定的虚拟机资源

调用标签关联接口,获取每个标签绑定的虚拟机ID,构建虚拟机ID:标签列表的映射:

vm_tag_bind = {}
for tag_id, tag_content in tag_map.items():
    req_data = {"tag_id": tag_id}
    attach_resp = vsession.post(
        'https://10.156.0.10/rest/com/vmware/cis/tagging/tag_association/list-attached-objects',
        json=req_data
    )
    attach_objs = json.loads(attach_resp.text)['value']
    for obj in attach_objs:
        # 仅过滤类型为虚拟机的绑定资源
        if obj['type'] == 'VirtualMachine':
            vm_id = obj['id']
            if vm_id not in vm_tag_bind:
                vm_tag_bind[vm_id] = []
            vm_tag_bind[vm_id].append(tag_content)

步骤3:查询虚拟机IP并完成关联

调用虚拟机清单接口获取所有虚拟机的ID、IP等属性,和上一步得到的标签映射做匹配:

vm_resp = vsession.get('https://10.156.0.10/rest/vcenter/vm')
all_vm_info = json.loads(vm_resp.text)['value']

# 最终关联结果
result = []
for vm in all_vm_info:
    vm_id = vm['vm']
    result.append({
        "虚拟机名称": vm['name'],
        "IP地址": vm.get('guest_ip_address', '未获取到'),
        "关联标签": vm_tag_bind.get(vm_id, [])
    })

注意事项

  • 调用API的账号需要同时拥有虚拟机只读权限和标签只读权限
  • 虚拟机IP需要虚拟机内部的VMware Tools正常运行才能被vCenter采集到,否则会返回空值
  • 如果需要获取多网卡的详细IP信息,可以调用单虚拟机的网卡查询接口:https://10.156.0.10/rest/vcenter/vm/{虚拟机ID}/guest/networking/interfaces

内容的提问来源于stack exchange,提问作者Rewanta Subba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:36:02