我正在使用以下 python 代码来设置 extra_config 参数 bios.bootOrder:
#!/bin/env python
from pysphere import VIServer, VITask
from pysphere.resources import VimService_services as VI
server = VIServer()
server.connect("vcenter-server", "myusername", "supersecrete")
vm = server.get_vm_by_name( 'targetvm' )
vm.set_extra_config({'bios.bootOrder': 'cdrom,hdd'}, sync_run=True)
不幸的是,重新配置任务成功完成,但启动顺序没有改变。据报道,该脚本适用于 ESXi 4.x。
有人可能遇到过同样的问题吗?
答案1
我找到了一个解决方案。API 随 vSphere 5 而改变。因此上述代码不再起作用。
...可能对其他人有帮助:https://gist.github.com/st0ne-dot-at/9984414
答案2
这是一个相当粗糙的脚本,但可以作为使用 pyvmomi 将启动顺序设置为 cd 的示例,对于从网络(pxe)启动 VM 也同样适用:
/usr/bin/python 的 #! 导入系统 导入时间 导入时间 导入 atexit 导入 argparse 从 pyVmomi 导入 vim、vmodl 从 pyVim 导入连接 从 pyVim.connect 导入 Disconnect、SmartConnect、GetSi 系统 = sys.argv[1] 输入 = {'vcenter_ip':'ip.ad.re.ss', ‘vcenter_password’:‘密码’, ‘vcenter_user’:‘用户’, ‘vm_name’ :系统, ‘操作’ : ‘停止’, ‘force’ :是的, } # 功能 def get_obj(内容,vimtype,名称): 对象 = 无 容器 = 内容.viewManager.CreateContainerView(内容.rootFolder,vimtype,True) 对于容器中的 c.view: 如果 c.name == 名称: 对象 = c 休息 返回对象 si = 连接。连接(输入['vcenter_ip'],443,输入['vcenter_user'],输入['vcenter_password']) 内容 = si.RetrieveContent() vm = get_obj(内容,[vim.VirtualMachine],输入['vm_name']) vm.关机() # 设置为从 cd/network 启动。# 输出的内容是你用于 network/pxe 启动的内容 #bn = vim.option.OptionValue(key='bios.bootDeviceClasses',value='allow:cd') bn = vim.option.OptionValue(key='bios.bootDeviceClasses',value='allow:net') vmconf = vim.vm.ConfigSpec() vmconf.extraConfig = [bn] vm.ReconfigVM_Task(vmconf) 时间.睡眠(10) 虚拟机.PowerOnVM_Task() 时间.睡眠(30) # 再次将系统设置为从硬盘启动 bn = vim.option.OptionValue(key='bios.bootDeviceClasses',value='allow:hd,cd,fd,net') vmconf = vim.vm.ConfigSpec() vmconf.extraConfig = [bn] vm.ReconfigVM_Task(vmconf)