27 lines
833 B
Bash
Executable file
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}"
|