web-dev-qa-db-ja.com

pysphereを使用してvSphere5.xでVMのブートオーダーを設定する方法

次の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)

残念ながら、再構成タスクは正常に終了しますが、ブートシーケンスは変更されません。伝えられるところによると、スクリプトはESXi4.xで動作しました。

誰かが同じ問題に直面する可能性がありますか?

1
st0ne

私は解決策を見つけました。 APIはvSphere5で変更されたため、上記のコードは機能しなくなりました。

...他の誰かに役立つかもしれません: https://Gist.github.com/st0ne-dot-at/9984414

2
st0ne

これはかなり大雑把なスクリプトですが、pyvmomiを使用して起動順序をcdに設定する例の目的を果たし、VMを起動するネットワーク(pxe)からの起動にも同様に機能します。

#!/ 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 Interconnect、SmartConnect、GetSi 
 
 system = sys.argv [1 ] 
 
入力= {'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、inpu ts ['vcenter_user']、inputs ['vcenter_password'])
 content = si.RetrieveContent()
 vm = get_obj(content、[vim.VirtualMachine]、inputs ['vm_name']) 
 vm.PowerOff()
 
 
#cd/networkから起動するように設定します。 # 'd outは、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)
 time.sleep(10)
 vm.PowerOnVM_Task()
 time.sleep(30)
 
 
#システムをhddから再度起動するように設定
 
 bn = vim.option.OptionValue(key = 'bios.bootDeviceClasses'、value = ' allow:hd、cd、fd、net ')
 vmconf = vim.vm.ConfigSpec()
 vmconf.extraConfig = [bn] 
 vm.ReconfigVM_Task(vmconf)