在vCenter 6.5中使用Pyvmomi 6.5无法创建支持LACP的分布式交换机
解决Pyvmomi 6.5创建vCenter 6.5 DVS时无LACP支持的问题
嘿,我之前也碰到过一模一样的情况——手动在vCenter里建DVS时LACP默认就开着,但用Pyvmomi创建的DVS死活不支持LACP,导致那些LAG示例代码根本没法用。其实这大概率不是Pyvmomi的bug,而是咱们创建DVS的时候没加上启用LACP必须的配置项。
问题根源
vCenter手动创建DVS时,后台会自动给DVS设置lacpApiVersion这个属性,而Pyvmomi的默认创建逻辑里并没有包含这个参数,所以新生成的DVS自然就没有LACP支持能力。
解决办法:创建DVS时显式开启LACP
在调用CreateDvs_Task创建DVS的spec里,咱们得手动加上lacpConfig配置,指定LACP的支持版本。给你写个完整的代码示例:
from pyVim.connect import SmartConnect, Disconnect from pyVmomi import vim import ssl # 测试环境可跳过SSL验证,生产环境建议配置合法证书 ssl_context = ssl._create_unverified_context() # 连接vCenter vc_si = SmartConnect( host="你的vCenter地址", user="你的用户名", pwd="你的密码", sslContext=ssl_context ) # 获取存放DVS的文件夹(根据你的环境调整,这里取第一个数据中心的网络文件夹) content = vc_si.RetrieveContent() datacenter = content.rootFolder.childEntity[0] dvs_folder = datacenter.networkFolder # 构建DVS创建规范 dvs_create_spec = vim.DistributedVirtualSwitch.CreateSpec() dvs_config_spec = vim.DistributedVirtualSwitch.ConfigSpec() dvs_config_spec.name = "My-LACP-Enabled-DVS" # 设置上行端口名称,按需调整 dvs_config_spec.uplinkPortPolicy = vim.DistributedVirtualSwitch.NameArrayUplinkPortPolicy() dvs_config_spec.uplinkPortPolicy.uplinkPortName = ["Uplink-01", "Uplink-02"] # 关键配置:启用LACP支持 dvs_config_spec.lacpConfig = vim.DistributedVirtualSwitch.LacpConfig() # vCenter 6.5支持lacpApiVersion1和lacpApiVersion2,v2功能更完整 dvs_config_spec.lacpConfig.lacpApiVersion = "lacpApiVersion2" # LACP模式可选active或passive,默认是active dvs_config_spec.lacpConfig.mode = "active" dvs_create_spec.configSpec = dvs_config_spec # 发起创建任务并等待完成 create_task = dvs_folder.CreateDvs_Task(spec=dvs_create_spec) while create_task.info.state not in [vim.TaskInfo.State.success, vim.TaskInfo.State.error]: pass if create_task.info.state == vim.TaskInfo.State.success: print("带LACP支持的DVS创建成功啦!") else: print(f"创建失败:{create_task.info.error.msg}") # 断开连接 Disconnect(vc_si)
验证步骤
创建完之后可以这么确认:
- 登录vCenter Web UI,找到这个DVS,进入设置 > 链路聚合,就能看到LACP已经启用了
- 用Pyvmomi查询DVS的
lacpConfig属性,检查lacpApiVersion是否正确设置
小提示
lacpApiVersion2在vCenter 6.5里是推荐版本,支持更完整的LACP特性- 现在DVS已经支持LACP了,你之前找到的那些LAG示例代码就能直接用啦
内容的提问来源于stack exchange,提问作者Kelly Corcam
相关产品推荐
相关产品推荐

