multi-clone.py improvements & random-vmotion.py
For a project i needed a couple of tools, so i improved my multi-clone.py script and created a new script: random-vmotion.py
multi-clone.py: setting advanced configuration parameters
The multi-clone.py script is improved so you are able to set advanced configuration parameters of the created VMs, this can be used if you have other tools that need some metadata or configuration.
To accomplish this, you have to use the CSV feature. The fields in the CSV have been changed slightly in comparison with the previous version:
'<Clone name>';'[Resouce Pool]';'[Folder]';'[MAC Address]';'[Post-processing Script]';'[Advanced VM Parameters in JSON format]'
Fields indicated with <> are mandatory, fields indicated with [] can be left empty.
For a full documentation, you can visit the GitHub repository.
random-vmotion.py
For some testing i needed a script which would be able to vMotion a set of VMs randomly to a set of Hosts. This script does exactly that.
The script accepts a file which contains the names of the VMs to move, one per line:
VM01
VM02
VM03
VM04
It also accepts a file which contains the names of the Hosts to randomly move to, one per line:
host1.domain.tld
host2.domain.tld
In the default way of working, it will continue to vMotion the VMs to a random host over and over again. For example: if you use the files above with the command:
random-vmotion.py -H vcenter.domain.tld -t hosts.list -u [email protected] -V vms.list
It will start moving the first VM to one of the two hosts, wait 30 seconds and do the same for the second VM, and so on. Once it moved the fourth VM, it will start again with the first one.
There are more options which provide extra functionality:
- Option to move each VM only once
- Option to work in threads
- Option to decrease the interval
The full documentation can be found on the GitHub page and an overview of the options can be found below:
usage: random-vmotion.py [-h] [-d] -H HOST [-i INTERVAL] [-l LOGFILE]
[-o PORT] [-p PASSWORD] [-S] -t TARGETFILE
[-T THREADS] -u USERNAME [-v] -V VMFILE
Randomly vMotion each VM from a list one by one to a random host from a list,
until stopped.
optional arguments:
-h, --help show this help message and exit
-d, --debug Enable debug output
-H HOST, --host HOST The vCenter or ESXi host to connect to
-i INTERVAL, --interval INTERVAL
The amount of time to wait after a vMotion is finished
to schedule a new one (default 30 seconds)
-l LOGFILE, --log-file LOGFILE
File to log to (default = stdout)
-o PORT, --port PORT Server port to connect to (default = 443)
-p PASSWORD, --password PASSWORD
The password with which to connect to the host. If not
specified, the user is prompted at runtime for a
password
-S, --disable-SSL-certificate-verification
Disable SSL certificate verification on connect
-t TARGETFILE, --targets TARGETFILE
File with the list of target hosts to vMotion to
-T THREADS, --threads THREADS
Amount of simultanious vMotions to execute at once.
(default = 1)
-u USERNAME, --user USERNAME
The username with which to connect to the host
-v, --verbose Enable verbose output
-V VMFILE, --vms VMFILE
File with the list of VMs to vMotion