#!/bin/sh
 set -x   // 为了做debug
##############################################:
#pre for openstack local network env,pre for mutil node,and for migration.
#date:2012.10.23
#author:kikupotter
##############################################
if [ $# -ne 1 ]   // 做一个判断,运行脚本的时候,看是在哪一台机子上运行。
then
     echo "please specify one arg. node1, node2, ro master!"
     exit 1
fi

#############################################
#main func. // 主函数部分,这部分没有写得很漂亮,简单的一个取了个名字,没有采用变量,比较罗嗦。
# sub func node1,node2,master.
pre_master(){
cat > /etc/network/interfaces <<EOF
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
                address 192.168.0.21
                netmask 255.255.255.0
                network 192.168.0.0
                broadcast 192.168.0.255
                gateway 192.168.0.254
                dns-nameservers 218.85.157.99

EOF
cat >/etc/hostname <<EOF
master
EOF
}
pre_node1(){
cat > /etc/network/interfaces <<EOF
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
                address 192.168.0.20
                netmask 255.255.255.0
                network 192.168.0.0
                broadcast 192.168.0.255
                gateway 192.168.0.254
                dns-nameservers 218.85.157.99

EOF
cat >/etc/hostname <<EOF
node1
EOF
}

pre_node2(){
cat > /etc/network/interfaces <<EOF
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
                address 192.168.0.23
                netmask 255.255.255.0
                network 192.168.0.0
                broadcast 192.168.0.255
                gateway 192.168.0.254
                dns-nameservers 218.85.157.99

EOF
cat >/etc/hostname <<EOF
node2
EOF
}

#END func.

############################################
# 这里做了一个case判断输入的第一个参数是属于哪一个节点的,对应节点,运行对应的子程序
case "${1}" in
     master)
            pre_master
             ;;
        node1)
            pre_node1
             ;;
        node2)
            pre_node2
             ;;
         *)
                echo "Please specify master ,ro nodeX"
                exit
             ;;
esac
##############################################
######all node must do for migration########
#update system
apt-get update;apt-get upgrade
apt-get -y install vim
sleep 2
#hosts for dns. 这一步很重要,也可以用NDS来做。
cat > /etc/hosts <<EOF 
127.0.0.1            localhost
192.168.0.21        master.cloud.com        master
192.168.0.20        node1.cloud.com        node1
192.168.0.23        node2.cloud.com        node2
EOF

#NOTE: If you are going to use live migration functionality, pre-create system user/group id so they can map directly in cluster setup.
#这个是为了保证迁移的时候,权限上不出问题,虽然想NFS有用户映射功能,但是难免会出错还有效率上的问题。建议都建成一样的哦
addgroup --system --gid 119 kvm
addgroup --system --gid 118 libvirtd
addgroup --system --gid 117 nova
adduser --system --home /var/lib/libvirt --shell /bin/false --uid 119 --gid 119 --disabled-password libvirt-qemu
adduser --system --home /var/lib/libvirt/dnsmasq --shell /bin/false --uid 118 --gid 118 --disabled-password libvirt-dnsmasq
adduser --system --home /var/lib/nova --shell /bin/false --uid 117 --gid 117 --disabled-password nova
adduser nova libvirtd

reroot
      前期一定要把迁移考虑进来,我也只是在测试阶段,比不上别人,一个人躲在实验室里面折腾,代码写的不好大家见谅哈。主要是完成前期的一些设置工作。我只用三台机子就无所谓变量了。呵呵。
      而且单网卡实在让我无语了。看到的亲 ,一定要用双卡。单卡做迁移我都是看运气的。现在开始要收集这些问题还有资料,为了就业把,经验是很重要的,而且自己记性不好,经常忘东西。记下来为了,以后,大家一起加油哦。