I've found pyvmomi examples on how to add a disk to an already existing VM, but I would like to customize the VM template and then clone. Setting the CPUs and memory are pretty straight forward, but the adding of one or more disks to an existing template, asides from the boot disk, eludes me. # Add an additional 200 GB disk new_disk_kb = int(20) * 1024 * 1024 disk_spec = vim.vm.device.VirtualDeviceSpec() disk_spec.fileOperation = "create" disk_spec.operation = vim.vm.device.VirtualDeviceSpec.Operation.add disk_spec.device = vim.vm.device.VirtualDisk() disk_spec.device.backing = vim.vm.device.VirtualDisk.RawDiskMappingVer1BackingInfo() disk_spec.device.backing.diskMode = 'persistent' disk_spec.device.unitNumber = 3 disk_spec.device.capacityInKB = new_disk_kb # vm configuration vmconf = vim.vm.ConfigSpec() vmconf.numCPUs = 8 # change the template's cpus from 4 to 8 vmconf.memoryMB = 16 * 1024 # change the template's memory from 4 GB to 16 GB # change the template's disks from # 1 250 GB boot, 1 x 200 GB disk # to # 1 250 gB boot, 2 x 200 GB disks vmconf.deviceChange = [ disk_spec ] # something is not right clonespec = vim.vm.CloneSpec() clonespec.location = relospec clonespec.powerOn = True clonespec.config = vmconf clonespec.customization = customspec task = template.Clone(folder = destfolder, name = vmname, spec = clonespec) The code works without the vmconf.deviceChange. Once I try to add a disk I see the error Invalid configuration for device '0'. or Incompatible device backing specified for device '0'. Continue reading...