如何使用pyvmomi在ESXi中创建虚拟机并配置其相关硬件

2 篇文章 0 订阅
2 篇文章 0 订阅

使用pyvmomi创建VM使用的API是createVM_Task, 具体使用说明如下:

 在ESXi中创建VM一共分为三步:

  1. 确定VM的创建位置。
  2. 配置VM的基本配置信息(比如:VM的名字、CPU个数、Memory大小等)。
  3. 添加初始设备到VM。
  4. 运行创建VM的函数。

接下来我们一步一步来看怎么实现。

1. 确定VM的创建位置

        在vCenter中我们可能需要确定datacenter和host的IP才能确定一个VM的创建位置。但是在ESXi中只有一个host,也只有一个datacenter(ha-datacenter),所以可以直接确定VM的创建位置。

destination_host = content.rootFolder.childEntity[0].hostFolder.childEntity[0].host[0]
# ESXi only 1 datacenter, call 'ha-datacenter'
datacenter_name = 'ha-datacenter'

# get resourcePool managed object
source_pool = destination_host.parent.resourcePool

for child in content.rootFolder.childEntity:
    if child.name == self.datacenter_name:
        vm_folder = child.vmFolder  # child is a datacenter
        break

这段代码中destination_host、source_pool和vm_folder都是创建VM要使用的关键参数。

2. 配置VM的基本配置信息

VM所有的配置信息都集中在VirtualMachineConfigSpec(vim.vm.ConfigSpec)这个Object 中。关于这个object的说明可参照pyvmomi的官方文档说明

可配置项十分的多,这里只列出了必要的几个参数,其他参数可以根据需要自行添加。 

"""
datastore_name (str): datastore name
name (str): vm name
cpu_num (int): Number of virtual processors in a virtual machine.
firmware (str): 'efi' or 'bios'
guest_os (str): Short guest operating system identifier.
memory (int): Size of a virtual machine's memory.

"""
config = vim.vm.ConfigSpec()
config.memoryMB = 4 * 1024
config.guestId = 'rhel8_64Guest'
config.name = "test_vm"
config.numCPUs = 4
config.firmware = 'efi'

使用函数vim.vm.ConfigSpec()创建object config,然后根据个人需要对该object进行填充。

3. 添加初始设备到VM

默认使用pyvmomi添加的VM是没有任何设备的,这里根据通过web创建VM时,默认带有的设备进行了添加。

# 1 SCSI Controller
config = add_scsi_controller_to_config(config)

# 1 SATA Controller
config = add_sata_controller_to_config(config)

# 1 USB Controller
config = add_usb_controller_to_config(config)

# 1 network adapter
config = add_nic_to_config(config)

# 1 hard disk
config = add_harddisk_to_config(config)

具体如何添加一个设备到VM,可以参见通过pyvmomi给ESXi现有VM添加一个SCSIcontroller

唯一不同是这里不用执行WaitForTask(vm.ReconfigVM_Task(spec=spec)),只需要把设备信息添加到config里就可以,在create_vm时会通用进行添加。

创建不同的device的细节不尽相同。但只要掌握了一种添加device的机制,其他device只需要根据不同的情况稍作变化就可以。

4.运行创建VM的函数

完成上面三步就完成了对VM的配置,最后只需一步就可大功告成。

try:
    WaitForTask(vm_folder.CreateVm(config, pool=source_pool, host=destination_host))
except Exception as e:
    log.error("%sUnknown exception: %s.%s" % (red1, str(e), font))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值