[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 bkpvmshould be on the sameoVirt Datacenterof the VM we need to take backup ofbkpvmshould have enought space to store backupsStorage Domainshould 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
qcow2file 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-release41.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.gitWe 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.crtThere 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 = 54323url:oVirt APIURLuser:User namepassword:User passwordca_file: Path toca.crtbkpvm: Name of ourbkpvmbckdir: Path to store backups in.qcow2formatstorage: Storage domain where we'll restore our backupsproxy:IPorhostnameof theovirt-image-proxyhost (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 webserverIn 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