Create oVirt/RHEV’s VM backup

Create backup of oVirt / RHEV’s VMs

[TOC]

Introduction

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.

Requirements

  • oVirt >= 4.0
  • Virtual machine with CentOS 7 with this tools installed, we’ll call this VM bkpvm
  • bkpvm should be on the same oVirt Datacenter of the VM we need to take backup of
  • bkpvm should have enought space to store backups
  • Storage Domain should have enought space to take snapshots

How does it work?

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

Instalation

Prerequisites

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 wget

Download

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
wget --insecure "https://ovirt.infratic.com/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA"

Usage

Configure

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 URL
  • user: User name
  • password: User password
  • ca_file: Path to ca.crt
  • bkpvm: Name of our bkpvm
  • bckdir: Path to store backups in .qcow2 format
  • storage: Storage domain where we’ll restore our backups
  • proxy: IP or hostname of the ovirt-image-proxy host (Default: ovirt-engine)
  • proxyport: TCP port of the ovirt-image-proxy (Default: 54323)

Create backup

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

Restore backup

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