summaryrefslogtreecommitdiffstats
path: root/utils/infra_setup/vm_dev_setup/setup_env.sh
blob: 795a0a6a84345d9b7e2cb130c4f08e3fa51e7fd4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/bin/bash

set -x

wait_vm_ok() {
    ip=$1

    retry=0
    until timeout 10s ssh $ssh_args ec2-user@$ip "exit" >/dev/null 2>&1
    do
        echo "retry connect rubbos vm ip $ip $retry"
        sleep 1
        let retry+=1
        if [[ $retry -ge $2 ]];then
            echo "rubbos control start timeout !!!"
            #exit 1
        fi
    done
}

bottlenecks_prepare_env()
{
    echo "Bottlenecks prepare env in VMs"

    # configue rubbos control ssh key
    generate_ssh_key

    # wait all other VMs ok
    for i in $rubbos_benchmark $rubbos_client1 $rubbos_client2 \
             $rubbos_client3 $rubbos_client4 $rubbos_httpd $rubbos_mysql1 $rubbos_tomcat1
    do
        wait_vm_ok $i 360
    done

    # configue other VMs
    for i in $rubbos_benchmark $rubbos_client1 $rubbos_client2 \
             $rubbos_client3 $rubbos_client4 $rubbos_httpd $rubbos_mysql1 $rubbos_tomcat1
    do
          scp $ssh_args -r $SCRIPT_DIR ec2-user@$i:/tmp
          ssh $ssh_args ec2-user@$i "sudo bash $SCRIPT_DIR/vm_prepare_setup.sh" &
    done

    # ugly use ssh execute script to fix ec2-user previlege issue
    ssh $ssh_args ec2-user@$rubbos_control "sudo bash $SCRIPT_DIR/vm_prepare_setup.sh"

    # test root access
    for i in $rubbos_control $rubbos_benchmark $rubbos_client1 $rubbos_client2 \
             $rubbos_client3 $rubbos_client4 $rubbos_httpd $rubbos_mysql1 $rubbos_tomcat1
    do
          ssh $ssh_args root@$i "uname -a"
    done
}

bottlenecks_download_repo()
{
    echo "Bottlenecks: download bottlenecks repo"

    sudo git config --global http.sslVerify false
    if [ -d $BOTTLENECKS_REPO_DIR/.git ]; then
        cd $BOTTLENECKS_REPO_DIR
        sudo git pull origin master
        if [ x"$GERRIT_REFSPEC_DEBUG" != x ]; then
            sudo git fetch $BOTTLENECKS_REPO $GERRIT_REFSPEC_DEBUG && sudo git checkout FETCH_HEAD
        fi
        cd -
    else
        sudo rm -rf $BOTTLENECKS_REPO_DIR
        sudo git clone $BOTTLENECKS_REPO $BOTTLENECKS_REPO_DIR
        if [ x"$GERRIT_REFSPEC_DEBUG" != x ]; then
            cd $BOTTLENECKS_REPO_DIR
            echo "fetch $GERRIT_REFSPEC_DEBUG"
            sudo git fetch $BOTTLENECKS_REPO $GERRIT_REFSPEC_DEBUG && sudo git checkout FETCH_HEAD
            cd -
        fi

    fi
}

bottlenecks_config_hosts_ip()
{
    sudo sed -i -e "s/REPLACE_CONTROL_HOST/$rubbos_control/g" \
           -e "s/REPLACE_HTTPD_HOST/$rubbos_httpd/g" \
           -e "s/REPLACE_MYSQL1_HOST/$rubbos_mysql1/g" \
           -e "s/REPLACE_TOMCAT1_HOST/$rubbos_tomcat1/g" \
           -e "s/REPLACE_CLIENT1_HOST/$rubbos_client1/g" \
           -e "s/REPLACE_CLIENT2_HOST/$rubbos_client2/g" \
           -e "s/REPLACE_CLIENT3_HOST/$rubbos_client3/g" \
           -e "s/REPLACE_CLIENT4_HOST/$rubbos_client4/g" \
           -e "s/REPLACE_BENCHMARK_HOST/$rubbos_benchmark/g" \
           $BOTTLENECKS_REPO_DIR/rubbos/rubbos_scripts/1-1-1/set_bottlenecks_rubbos_env.sh
}

bottlenecks_download_packages()
{
    echo "Bottlenecks: download rubbos dependent packages from artifacts"

    curl --connect-timeout 10 -o /tmp/app_tools.tar.gz $RUBBOS_APP_TOOLS_URL 2>/dev/null
    sudo tar zxf /tmp/app_tools.tar.gz -C $RUBBOS_DIR
    rm -rf /tmp/app_tools.tar.gz
    curl --connect-timeout 10 -o /tmp/rubbosMulini6.tar.gz $RUBBOS_MULINI6_URL 2>/dev/null
    sudo tar zxf /tmp/rubbosMulini6.tar.gz -C $RUBBOS_MULINI6_DIR
    rm -rf /tmp/rubbosMulini6.tar.gz
}

bottlenecks_rubbos_install_exe()
{
    echo "Bottlenecks: install and run rubbos"

    cd $RUBBOS_RUN_DIR
    sudo ./run.sh
}

main()
{
    SCRIPT_DIR=`cd ${BASH_SOURCE[0]%/*};pwd`

    ssh_args="-o StrictHostKeyChecking=no -o BatchMode=yes"
    source $SCRIPT_DIR/package.conf
    source $SCRIPT_DIR/hosts.conf
    source $SCRIPT_DIR/common.sh

    bottlenecks_prepare_env
    set -x
    bottlenecks_download_repo
    bottlenecks_config_hosts_ip
    bottlenecks_download_packages
    bottlenecks_rubbos_install_exe
}

main
set +x