#!/bin/bash function check_lock() { if [ -e "/var/lock/vz-migrate.lock" ]; then echo "Lock file detected, euthanizing self." exit else touch /var/lock/vz-migrate.lock fi } function create_vg() { echo "Creating logical volume for $NAME" lvcreate -L 20G -n $NAME my_volume_group if [ $? != "0" ] then echo echo "Volume Group already exists!" echo "You must delete this host before continuing." echo exit else mkfs -t ext3 /dev/my_volume_group/$NAME echo "Mounting..." mount -t ext3 /dev/my_volume_group/$NAME /mnt if [ $? != "0" ] then echo "Mount error. Mount point already in use?" exit fi fi } function get_data() { echo -n "What is the host name? " read NAME echo -n "IP Address? " read OLDIP echo -n "Netmask? " read NETMASK echo -n "Gateway? " read GATEWAY echo -n "Root Password? " read ROOTPW echo -n "Old host server (vzXXX) ? " read OLDSERVER } function copy_template() { echo "Copying template data over..." tar xjpvf /usr/src/centos4-cpanel-template.tar.bz2 -C /mnt } function create_swap() { echo "Creating swap file..." dd if=/dev/zero of=/xen/swap/${NAME}.swap bs=1k seek=256k count=1 mkswap /xen/swap/${NAME}.swap } check_lock get_data create_vg create_swap copy_template echo "Creating config file..." cat << EOF > /etc/xen/auto/$NAME.cfg kernel = "/boot/xenkernel" memory = 256 name = "$NAME" vif = [ '' ] disk = ['phy:my_volume_group/${NAME},sda1,w', 'tap:aio:/xen/swap/${NAME}.swap,sda2,w'] root = "/dev/sda1 ro" EOF echo "Applying network config..." cat << EOF > /mnt/etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static IPADDR=$OLDIP NETMASK=$NETMASK GATEWAY=$GATEWAY ONBOOT=yes TYPE=Ethernet EOF cat << EOF > /mnt/etc/sysconfig/network NETWORKING=yes HOSTNAME=$NAME EOF # Create MySQL config file # cp /mnt/usr/share/mysql/my-small.cnf /mnt/etc/my.cnf echo "Creating ssh key to access old server." # Create ssh key and copy it over if [ ! -e /root/.ssh/id_dsa.pub ]; then mkdir /root/.ssh ssh-keygen -t dsa -q -N "" -f /root/.ssh/id_dsa ssh $OLDIP mkdir /root/.ssh cat /root/.ssh/id_dsa.pub | ssh $OLDIP "cat >> /root/.ssh/authorized_keys" else cat /root/.ssh/id_dsa.pub | ssh $OLDIP "cat >> /root/.ssh/authorized_keys" fi # Change Cpanel Settings #echo maildir=0 >> /var/cpanel/cpanel.config #echo mysqloldpass=1 >> /var/cpanel/cpanel.config echo "Copying data, this may take a while..." # Password, shadow, group, and IP info scp $OLDIP:/etc/userdomains /mnt/etc/ scp $OLDIP:/etc/localdomains /mnt/etc/ scp $OLDIP:/etc/shadow /mnt/etc/ scp $OLDIP:/etc/passwd /mnt/etc/ scp $OLDIP:/etc/group /mnt/etc/ scp $OLDIP:/etc/ips /mnt/etc/ # Mail Stuff rsync -av $OLDIP:/etc/valiases/ /mnt/etc/valiases/ rsync -av $OLDIP:/etc/vfilters/ /mnt/etc/vfilters/ rsync -av $OLDIP:/usr/local/cpanel/3rdparty/mailman/ /mnt/usr/local/cpanel/3rdparty/mailman/ # MySQL Data rsync -av $OLDIP:/var/lib/mysql/ /mnt/var/lib/mysql/ # Apache rsync -av $OLDIP:/usr/local/apache/ /mnt/usr/local/apache/ # Frontpage rsync -av $OLDIP:/usr/local/frontpage/ /mnt/usr/local/frontpage/ # Var Stuff rsync -av $OLDIP:/var/spool/ /mnt/var/spool/ rsync -av $OLDIP:/var/cpanel/ /mnt/var/cpanel/ # SSL Stuff rsync -av $OLDIP:/usr/share/ssl/ /mnt/usr/share/ssl/ # Home Directories rsync -av $OLDIP:/home/ /mnt/home/ # LW Stuff rsync -av $OLDIP:/usr/local/lp/ /mnt/usr/local/lp/ echo "Rsync done, whee!!" umount /mnt echo "Shutting off old server..." ssh $OLDIP shutdown -h now echo "Waiting 5 seconds:" count="6" min="1" while [ $count != $min ]; do count=`expr $count - 1` echo -n "$count..." sleep 1 done echo rm -fv /var/lock/vz-migrate.lock echo "Clear ARP and then start new account with the following command: " echo "xm create /etc/xen/auto/$NAME.cfg -c"