[TOC]
I've been working with oVirt
since version 3.5
as main virtualization platform, from day one i were looking for a tool to create VM backups based on snapshot as many solutions does with VMWARE
, after some research i didn't find a tool that fulfilled my requirements so i decided to create one using oVirt python API.
- oVirt >= 4.0
- Virtual machine with CentOS 7 with this tools installed, we'll call this VM
bkpvm
bkpvm
should be on the sameoVirt Datacenter
of the VM we need to take backup ofbkpvm
should have enought space to store backupsStorage Domain
should have enought space to take snapshots
This script should run on bkpvm
and it connect to oVirt API
to do:
- Create snapshot
- Attach disk to
bkpvm
- Create a
qcow2
file of the VM's disk - Delete snapshot
After finish it creates a qcow2
file for each VM's disk
Install required repositories on bkpvm
:
yum install -y epel-release
yum install -y http://resources.ovirt.org/pub/yum-repo/ovirt-release43.rpm
Install required packages from repositories configured:
yum install -y qemu-img python-ovirt-engine-sdk4 python-requests git ovirt-guest-agent
cd /opt
git clone https://github.com/vacosta94/VirtBKP.git
We need to get our oVirt's CA in order to establish secure connections to oVirt API
cd /opt/VirtBKP
curl --insecure "https://ovirt.infratic.com/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA" -o ca.crt
There is a configuration file default.conf
inside VirtBKP
folder, that file have all the parameters required by the tool. Should modify this file according your environment as follow:
vim /opt/VirtBKP/default.conf
[bkp]
url = https://ovirt.example.com/ovirt-engine/api
user = admin@internal
password = password
ca_file = ca.crt
bkpvm = bkpvm
bckdir = /mnt/
[restore]
url = https://ovirt.example.com/ovirt-engine/api
user = admin@internal
password = password
ca_file = ca.crt
storage = gfs_pool0
proxy = ovirt.example.com
proxyport = 54323
url
:oVirt API
URLuser
:User name
password
:User password
ca_file
: Path toca.crt
bkpvm
: Name of ourbkpvm
bckdir
: Path to store backups in.qcow2
formatstorage
: Storage domain where we'll restore our backupsproxy
:IP
orhostname
of theovirt-image-proxy
host (Default: ovirt-engine)proxyport
: TCP port of theovirt-image-proxy
(Default: 54323)
In order to create backups of virtual machines you should use the syntax bellow:
/opt/VirtBKP/backup_vm.py <configuration_file> <vm_name>
Example:
/opt/VirtBKP/backup_vm.py /opt/VirtBKP/default.conf webserver
In order to restore an existing backup you should use the syntax bellow:
/opt/VirtBKP/upload_disk.py <configuration_file> <qcow2_file>
Example
/opt/VirtBKP/upload_disk.py /mnt/webserver_2017-04-28-00h.qcow2