kvm-tools/vm-migrate

27 lines
833 B
Bash
Executable File

#!/bin/bash
set -eu
error() {
msg="${1:-$(cat /dev/stdin)}"
echo "ERROR : ${msg}" >&2
exit 1
}
vmname="${1:-}"
[ -n "${vmname}" ] || error "You must provide <vmname> !"
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}"