#!/bin/bash set -eu error() { msg="${1:-$(cat /dev/stdin)}" echo "ERROR : ${msg}" >&2 exit 1 } vmname="${1:-}" [ -n "${vmname}" ] || error "You must provide !" virsh list --name | grep -qE "^${vmname}$" || error "${vmname} is not a running VM !" [ -f "/etc/evolinux/add-vm.cnf" ] && . /etc/evolinux/add-vm.cnf slaveKVMIP="${slaveKVMIP:-}" ssh "${slaveKVMIP}" virsh exit || error "Cannot connect to libvirt on ${slaveKVMIP} !" drbdadm net-options --protocol=C --allow-two-primaries "${vmname}" ssh "${slaveKVMIP}" drbdadm primary "${vmname}" virsh migrate --live --unsafe --verbose "${vmname}" "qemu+ssh://${slaveKVMIP}/system" "tcp://${slaveKVMIP}/" virsh dumpxml "${vmname}" | ssh "${slaveKVMIP}" virsh define /dev/stdin virsh undefine "${vmname}" drbdadm secondary "${vmname}" drbdadm adjust "${vmname}"