Cloning a Virtual
Machine
A clone is a copy of a virtual machine. The
main difference between a virtual machine and a clone is that the
VirtualMachine.config.template
property is set to
true
.
You can create a clone in one of the following
ways:
- If you no longer need a specific instance of a virtual machine, but you want to use the virtual machine’s configuration as a template, use theVirtualMachine.MarkAsTemplatemethod. This method sets theconfig.templateproperty totrue, and disables the virtual machine.
- If you want to use an existing virtual machine as a template, but keep the virtual machine, call theVirtualMachine.CloneVM_Taskmethod to create a duplicate of the virtual machine.
If you use the
VirtualMachine.CloneVM_Task
method, you can customize certain attributes of the clone by specifying them in
the
VirtualMachineCloneSpec
data
object you pass in when you call the method.
The following code fragment from
VMClone.java
illustrates how
you can customize a clone and specify a new location for it.
Cloning a Virtual Machine
VirtualMachineCloneSpec cloneSpec = new VirtualMachineCloneSpec(); VirtualMachineRelocateSpec relocSpec = new VirtualMachineRelocateSpec(); cloneSpec.setLocation(relocSpec); cloneSpec.setPowerOn(false); cloneSpec.setTemplate(false); String clonedName = cloneName; ManagedObjectReference cloneTask = service.cloneVM_Task(vmRef, vmFolderRef, clonedName, cloneSpec);
The
VirtualMachine.CloneVM_Task
method takes the source virtual machine, target folder, name, and
VirtualMachineCloneSpec
as
arguments.
The
VirtualMachineCloneSpec
data
object includes the location, power state, and whether the clone should be a
template. The location, in turn, is a
VirtualMachineRelocateSpec
data object that specifies the target location (datastore, disk, and host or
resource pool) and any transformation to be performed on the disk.