Scripts update to run rubbos on compass4nfv env 3
[bottlenecks.git] / utils / infra_setup / vm_dev_setup / setup_env.sh
index a0018c8..bfc8f72 100755 (executable)
 #!/bin/bash
 
-set -ex
+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()
 {
-    set +e
-    for i in $PreInstall_Packages; do
-        if ! apt --installed list 2>/dev/null |grep "\<$i\>"
-        then
-            sudo apt-get install  -y --force-yes  $i
-        fi
+    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
-    set -e
+}
 
-    if [ -d $RUBBOS_CACHE_DIR ]; then
-        rm -rf $RUBBOS_CACHE_DIR
+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
-    mkdir -p $RUBBOS_CACHE_DIR
 }
 
 bottlenecks_download_repo()
 {
-    if [ -d $BOTTELENECKS_REPO_DIR/.git ]; then
-        cd $BOTTLENECKS_REPO_DIR
-        git pull origin master
-        cd -
-    else
-        rm -rf $BOTTLENECKS_REPO_DIR
-        git clone $BOTTLENECKS_REPO $BOTTLENECKS_REPO_DIR
+    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
+    sudo cd $BOTTLENECKS_REPO_DIR
+    sudo git checkout master && sudo git pull
+    git_checkout $BOTTLENECKS_BRANCH $BOTTLENECKS_REPO
+    sudo 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()
 {
-    for i in ; do #list the packages
-       if [[ ! $i ]]; then
-           continue
-       fi
-       curl --connect-timeout 10 -o $RUBBOS_CACHE_DIR/$i $PACKAGE_URL 2>/dev/null
-    done
+    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
-    ./run.sh
-    cd $RUBBOS_EXE_DIR
-    ./CONTROL_rubbos_exec.sh
+    sudo ./run.sh
 }
 
 main()
 {
-    PreInstall_Packages="gcc gettext g++ libaio1 libaio-dev make"
     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