Как задать порядок загрузки для виртуальной машины в vsphere 5.x с pysphere

Я использую следующий код 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.

может кто-то сталкивался с той же проблемой?

15
задан Hennes
01.03.2023 3:42 Количество просмотров материала 3506
Распечатать страницу

2 ответа

Я нашел решение. API изменился с vSphere 5. Поэтому приведенный выше код не работает.

... возможно, полезная для кого-то другого: https://gist.github.com/st0ne-dot-at/9984414

2
отвечен st0ne 2023-03-02 11:30

вот довольно грубый сценарий, но служит цели примера, который использует pyvmomi установить порядок загрузки на компакт-диск, работает одинаково хорошо для загрузки из сети (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 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)

1
отвечен Graeme Brooks-Crawford 2023-03-02 13:47

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх