summaryrefslogtreecommitdiffstats
path: root/utils/infra_setup/vm_dev_setup/setup_env.sh
blob: db280e7708a79259f9baeb30a7611df7ec17dc09 (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
132
133
134
135
136
137
138
139
140
#!/bin/bash
##############################################################################
# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################

set -x

wait_vm_ok() {
    ip=$1

    retry=0
    until timeout 10s ssh $ssh_args ubuntu@$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"

    # 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 ubuntu@$i:/tmp
          ssh $ssh_args ubuntu@$i "sudo bash $SCRIPT_DIR/vm_prepare_setup.sh" &
    done

    # ugly use ssh execute script to fix ubuntu previlege issue
    ssh $ssh_args ubuntu@$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
}

git_checkout()
{
    if sudo git cat-file -e $1^{commit} 2>/dev/null; then
        # branch, tag or sha1 object
        sudo git checkout $1
    else
        # refspec / changeset
        sudo git fetch --tags --progress $2 $1
        sudo git checkout FETCH_HEAD
    fi
}

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

    sudo git config --global http.sslVerify false
    if [ ! -d $BOTTLENECKS_REPO_DIR ]; then
        sudo git clone $BOTTLENECKS_REPO $BOTTLENECKS_REPO_DIR
    fi
    cd $BOTTLENECKS_REPO_DIR
    sudo git checkout master && sudo git pull
    git_checkout $BOTTLENECKS_BRANCH $BOTTLENECKS_REPO
    cd -
}

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/hosts.conf
    source $SCRIPT_DIR/package.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