Eu encontrei uma solução. A API mudou com o vSphere 5. Portanto, o código acima não funciona mais.
... pode ser útil para outra pessoa: link
Estou usando o seguinte código python para definir o parâmetro 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)
Infelizmente, a tarefa de reconfiguração é concluída com êxito, mas a sequência de inicialização não é alterada. Alegadamente, o script funcionou com o ESXi 4.x.
Alguém pode enfrentar o mesmo problema?
Eu encontrei uma solução. A API mudou com o vSphere 5. Portanto, o código acima não funciona mais.
... pode ser útil para outra pessoa: link
Aqui está um script bastante cru, mas serve o propósito de um exemplo que usa pyvmomi para definir a ordem de inicialização para cd, funciona igualmente bem para inicializar a partir da rede (pxe) inicializando VMs também:
#!/usr/bin/python import sys import time import time import atexit import argparse from pyVmomi import vim, vmodl from pyVim import connect from pyVim.connect import Disconnect, SmartConnect, GetSi system = sys.argv[1] inputs = {'vcenter_ip': 'ip.ad.re.ss', 'vcenter_password': 'passwd', 'vcenter_user': 'user', 'vm_name' : system, 'operation' : 'stop', 'force' : True, } # Functions def get_obj(content, vimtype, name): objct = None container = content.viewManager.CreateContainerView(content.rootFolder, vimtype, True) for c in container.view: if c.name == name: objct = c break return objct si = connect.Connect(inputs['vcenter_ip'], 443, inputs['vcenter_user'], inputs['vcenter_password']) content = si.RetrieveContent() vm = get_obj(content, [vim.VirtualMachine], inputs['vm_name']) vm.PowerOff() # Set to boot from cd/network. #'d out is what you'd use for network/pxe booting #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) time.sleep(10) vm.PowerOnVM_Task() time.sleep(30) # Set system to boot from hdd again bn = vim.option.OptionValue(key='bios.bootDeviceClasses',value='allow:hd,cd,fd,net') vmconf = vim.vm.ConfigSpec() vmconf.extraConfig = [bn] vm.ReconfigVM_Task(vmconf)