Add scripts to setup development env
[bottlenecks.git] / utils / rubbos_dev_env_setup / deploy.sh
1 #!/bin/bash
2
3 # this is a modified copy of compass4nfv/deploy/host_virtual.sh
4
5 set -x
6
7 SCRIPT_DIR=`cd ${BASH_SOURCE[0]%/*};pwd`
8 WORK_DIR=${SCRIPT_DIR}/work
9
10 mkdir -p $WORK_DIR
11
12 source ./env_config.sh
13
14 host_vm_dir=$WORK_DIR/vm
15
16
17 function download_iso()
18 {
19     mkdir -p ${WORK_DIR}/cache
20     curl --connect-timeout 10 -o ${WORK_DIR}/cache/$IMAGE_NAME $IMAGE_URL
21 }
22
23
24 function tear_down_machines() {
25     for i in $HOSTNAMES; do
26         echo "tear down machine:" $i
27         sudo virsh destroy $i
28         sudo virsh undefine $i
29         rm -rf $host_vm_dir/$i
30     done
31 }
32
33
34 function get_host_macs() {
35     local mac_generator=${SCRIPT_DIR}/mac_generator.sh
36     local machines=
37
38     chmod +x $mac_generator
39     mac_array=$($mac_generator $VIRT_NUMBER)
40     machines=$(echo $mac_array)
41
42     echo $machines
43 }
44
45 function launch_host_vms() {
46     mac_array=($(get_host_macs))
47
48     echo ${mac_array[2]}
49     echo ${mac_array[*]}
50
51     old_ifs=$IFS
52     IFS=,
53     tear_down_machines
54     echo "bringing up vms ${mac_array[*]}"
55     i=0
56     for host in $HOSTNAMES; do
57         echo "creating vm disk for instance $host" \
58              "ip ${IPADDR_PREFIX}${i}" \
59              "mac ${mac_array[$i]}"
60         vm_dir=$host_vm_dir/$host
61         mkdir -p $vm_dir
62
63         cp ${WORK_DIR}/cache/$IMAGE_NAME $vm_dir
64
65         # create seed.iso
66         sed -e "s/REPLACE_IPADDR/${IPADDR_PREFIX}$((i+11))/g" \
67             -e "s/REPLACE_GATEWAY/${IPADDR_PREFIX}1/g" \
68             -e "s/REPLACE_HOSTNAME/${host}/g" \
69             meta-data_template \
70             > meta-data
71         cp user-data_template user-data
72         genisoimage  -output seed.iso -volid cidata -joliet -rock user-data meta-data
73         cp seed.iso $vm_dir
74
75         # create vm xml
76         sed -e "s/REPLACE_MEM/$VIRT_MEM/g" \
77             -e "s/REPLACE_CPU/$VIRT_CPUS/g" \
78             -e "s/REPLACE_NAME/$host/g" \
79             -e "s#REPLACE_IMAGE#$vm_dir/disk.img#g" \
80             -e "s#REPLACE_SEED_IMAGE#$vm_dir/seed.iso#g" \
81             -e "s/REPLACE_MAC_ADDR/${mac_array[$i]}/g" \
82             libvirt_template.xml \
83             > $vm_dir/libvirt.xml
84
85         sudo virsh define $vm_dir/libvirt.xml
86         sudo virsh start $host
87         let i=i+1
88     done
89     IFS=$old_ifs
90     rm -rf meta-data user-data seed.iso
91 }
92
93
94 download_iso
95 launch_host_vms
96
97 set +x
98