# VM-Libvirt-CloneHelper Create a bunch of cloned VMs in via libvirt. ## SYNOPSIS ``` clonehelper [-f ] [-n ] -a ``` ## DESCRIPTION The basic work flow for this is like below. ``` delete clone start wait a bit till they are all started snapshot shutdown ``` This can automatically be done via using the action recreate. If you wish to do it for all, you likely want to use recreate_all. A single VM may be acted upon via using the -n switch. ## SWITCHES ### -a action The action to perform. ### -f config The config to use. ### -n name Act specifically on this VM instead of them all. ## ACTIONS ### list Print a JSON dump of VMs, maps, and IPs. ### start Start all the VM clones. ### stop Stop all the VM clones. ### clone Generate the VM clones. ### delete Delete all the VM clones. ### net_xml Generate the XML config and print it. ### net_redefine Remove and re-add the network using the generated config. ### recreate Recreate the VMs. ### recreate_all Recreate the VMs, doing them one at a time. ### snapshot Snapshot all the VM clones. ## CONFIG The config format is a INI file. The variable/value defaults are shown below. ```ini net=default # Name of the libvirt network in question. blank_domains=/usr/local/etc/clonehelper/blank_domains # List of domains to blank via setting 'dnsmasq:option value='address=/foo.bar/'. # If not this file does not exist, it will be skipped. net_head=/usr/local/etc/clonehelper/net_head # The top part of the net XML config that that dnsmasq options will be # sandwhiched between. net_tail=/usr/local/etc/clonehelper/net_tail # The bottom part of the net XML config that that dnsmasq options will # be sandwhiched between. windows_blank=1 # Blank commonly used MS domains. This is handy for reducing network noise # when testing as well as making sure they any VMs don't do something like # run updates when one does not want it to. mac_base=00:08:74:2d:dd: # Base to use for the MAC. ipv4_base=192.168.1. # Base to use for the IPs for adding static assignments. start=100 # Where to start in set. to_clone=baseVM # The name of the VM to clone. clone_name_base=cloneVM # Base name to use for creating the clones. 'foo' will become 'foo$current', so # for a start of 100, the first one would be 'foo100' and with a count of 10 the # last will be 'foo109'. count=10 # How many clones to create. snapshot_name=clean # The name to use for the snapshot. wait=360 # How long to wait if auto-doing all. ``` ## INSTALL - File::Slurp - Config::Tiny Via CPANM ```shell cpanm VM::Libvirt::CloneHelper ``` Via source... ```shell perl Makefile.PL make make test make install ```