Kaynağa Gözat

añado el zonemigrate.sh al repo

pull/1/head
Pablo Sarria 7 yıl önce
ebeveyn
işleme
51ae92b3d9
1 değiştirilmiş dosya ile 90 ekleme ve 0 silme
  1. +90
    -0
      zonemigrate.sh

+ 90
- 0
zonemigrate.sh Dosyayı Görüntüle

@@ -0,0 +1,90 @@
#!/usr/bin/bash

if [ "$#" -ne 2 ]; then
echo "Illegal number of parameters"
echo "Usage: $0 {UUID} {DESTINYNODE}"
exit 1
fi

UUID=$1
NODODESTINO=$2

KEYFILE="/usbkey/ssh/id_rsa"
DESTINYPORT="2221"
SSH="ssh -i $KEYFILE -p $DESTINYPORT"
SCP="scp -P $DESTINYPORT -i $KEYFILE"
CFG="/zones/tools/cfg"
BRAND=`/usr/sbin/vmadm get ${UUID} | json brand | tr -d '\n'`
ZONEPATH=`vmadm get ${UUID} | json zonepath | tr -d '\n' | sed 's/\///'`

# chequeamos la existencia del archivo llave
if [ ! -f $KEYFILE ]; then
echo "ssh $KEYFILE inexistent!"
echo "Create it please"
exit 1
fi

snapshot()
{
zfs snapshot $1@`date +%Y%m%d`
zfs send $1@`date +%Y%m%d` | $SSH $NODODESTINO zfs receive $1
zfs snapshot $1@`date +%Y%m%d`.incremental
zfs send -i $1@`date +%Y%m%d` $1@`date +%Y%m%d`.incremental | $SSH $NODODESTINO zfs receive $1
}

# capturamos el alias que vmadm usa en base64 y que da problemas con el mitico zonecfg

ALIAS=`vmadm get ${UUID} | json alias | tr -d '\n'`
zonecfg -z ${UUID} "select attr name=alias; set value=temporal; end"

# creamos snapshot, lo enviamos, creamos incremental y la enviamos

snapshot ${ZONEPATH}

# verificamos si estamos tratando con una kvm y si es asi la respaldamos
echo "verificamos filesystems (kvm) adicionales..."

if [ $BRAND = "kvm" ]; then
FILESYSTEM=`vmadm get ${UUID} | json disks.0.zfs_filesystem | tr -d '\n'`
snapshot ${FILESYSTEM}
fi

# verificamos si tenemos datasets adicionales y los enviamos
echo "verificamos datasets adicionales..."

DATASET=`vmadm get ${UUID} | json datasets.0 | tr -d '\n'`

if [ -n "${DATASET}" ]; then
snapshot ${DATASET}
fi

# exportamos configuracion
echo "exportamos configuracion..."

zonecfg -z ${UUID} export > $CFG/${UUID}.cfg
$SCP $CFG/${UUID}.cfg $NODODESTINO:$CFG/${UUID}.cfg

# destino
echo "enviamos config a destino..."

$SSH $NODODESTINO zonecfg -z ${UUID} < $CFG/${UUID}.cfg
$SSH $NODODESTINO zoneadm -z ${UUID} attach
$SSH $NODODESTINO zoneadm -z ${UUID} halt

# reestablecemos el alias que usa vmadm

$SSH $NODODESTINO vmadm update ${UUID} alias=${ALIAS}
vmadm update ${UUID} alias=${ALIAS}

# detenemos la zona en local

zoneadm -z ${UUID} halt

# iniciamos la zona en remoto

$SSH $NODODESTINO zoneadm -z ${UUID} boot


# TODO:
# - puede haber mas de un FILESYSTEM en la zona, necesitamos iterar por el array y lanzar la funcion snapshot sobre cada uno de ellos
# - puede haber mas de un DATASET en la zona, necesitamos iterar por el array y lanzar la funcion snapshot sobre cada uno

Yükleniyor…
İptal
Kaydet