Hi Dan,
Thank you for comment and useful suggestion.
While this works ok in simple cases, I'm not sure it neccessarily
scales
upto handle the more complex cases easily enough. With this prototype the
user only has the option of specifying new device names. Conceivably the
user could want to specify a whole lot more 'new' parameters - eg change
the VNC port if it was not previously auto-allocated, specify a new MAC
address (for any/all NICs), specify a UUID, etc.
Cloning I defined aims at creating a just duplication as it except
informations that must not overlap as a virtual machine.
But I wanto to specify the more 'new' parameters(name, mac ..) for next.
Thank you for below suggestion.
Because I want to add 'new' parameters for next, It is goot way for also me.
I agree. I try to propose for this feature for virt-install et-mgmt-tools(a)redhat.com.
I think cloning should be kept separate from the main libvirt API
because
there are simply too many different ways to approach it, depending on your
application use-cases. The way I like to look at it, is that we've just got
several different ways to 'install' a guest
1. Traditional installation media (eg CDROM, HTTP kickstart)
2. Boot a LiveCD which can install itself to disk
3. Create from a VM 'template', possibly cloning some base disk
4. Cloning an existing provisioned VM
Now virt-install currently deals with the first option, and there is some
work going on to experiment with making it do options 2 & 3 too. So I think
that it'd be worth trying to add some form of cloning capability to virt-install
too.
Thinking how it might work..
Currently to install from HTTP you might do
virt-install
--name myvm
--ram 500
--mac 54:24:52:23:55:43
--vnc
--vncunused
--url
http://download.fedora.redhat.com/pub/fedora/linux/core/6/x86_64/os/
--filesize 5
--file /var/lib/xen/images/myvm.img
So, how might it work with cloning ? Basically install of the --url arg to point
to an install source, we'd allow '--clone VMNAME' to point to an existing
virtual
machine. The main config would be determined by the settings of that VM, with the
command line args being used to override specific bits. As a bare minimum
example one would do
virt-install
--name othervm
--clone myvm
--file /var/lib/xen/images/othervm.img
But for a more complex case one could use all the various args
virt-install
--name othervm
--clone myvm
--uuid 2452:ef23:ee3e:2232:442424252525ffe
--vncport 5902
--mac 42:55:23:66:23:44
--file /var/lib/xen/images/myvm.img
--file /var/lib/xen/images/myvmdata.img
Now without prototyping it, I'm not sure how much code re-use we'd get within
virt-install, so it may turn out that it is simpler to just have a separate
tool called virt-clone for this purpose. In either case I reckon we could
distribute this as part of the main virtinst codebase, so it is still easy
for us to access the functionality from virt-manager.
Thanks,
Kazuki Mizushima