Update vm prepare setup 29/5429/1
authorQiLiang <liangqi1@huawei.com>
Mon, 4 Jan 2016 03:59:06 +0000 (03:59 +0000)
committerQiLiang <liangqi1@huawei.com>
Mon, 4 Jan 2016 04:03:28 +0000 (04:03 +0000)
add nameserver, ssh-key configure and package install

JIRA: BOTTLENECK-33

Change-Id: I66dca9d2367f85bc353ce159689028be97a3b78d
Signed-off-by: QiLiang <liangqi1@huawei.com>
utils/infra_setup/heat_template/HOT_create_instance.sh
utils/infra_setup/vm_dev_setup/common.sh [new file with mode: 0644]
utils/infra_setup/vm_dev_setup/package.conf
utils/infra_setup/vm_dev_setup/setup_env.sh
utils/infra_setup/vm_dev_setup/vm_prepare_setup.sh [new file with mode: 0644]
utils/rubbos_dev_env_setup/deploy.sh

index 8ca54b0..ecb9ab8 100755 (executable)
@@ -90,6 +90,10 @@ bottlenecks_rubbos_run()
           echo "$i=$ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
     done
 
+    nameserver_ip=$(grep -m 1 '^nameserver' \
+        /etc/resolv.conf | awk '{ print $2 '})
+    echo "nameserver_ip=$nameserver_ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
+
     scp $ssh_args -r \
         $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup \
         ec2-user@$control_ip:/tmp
diff --git a/utils/infra_setup/vm_dev_setup/common.sh b/utils/infra_setup/vm_dev_setup/common.sh
new file mode 100644 (file)
index 0000000..625a447
--- /dev/null
@@ -0,0 +1,65 @@
+#!/bin/bash
+
+generate_ssh_key() {
+    if [ ! -d ~/.ssh ]; then
+        mkdir ~/.ssh
+    fi
+
+    cat << EOF > ~/.ssh/id_rsa
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAsJsfP/OlXNcqqqZTD5Jv8OsAdq+WJegozjfOSqOUszxKZ8rC
+cDucoGzApUE28wlM7SKRXjvA+sXVpYT5oTBCSFrUYfg8dLMAfgcjK2hkz/dscSqN
+rpFs2COnrtuS5iV/mtZZlT5nsEKvunT8yMIAmb8A/FFXuS/ndBD9q294p4kFaAc5
+LFJoS9zeo6di4KbHH4tclxYIxXS6Q7AnBXDPkOsEFAtvqhgWGuUcanq3FsyEkm7w
+LGMAu1HqZoxaXI91v1l9kHDggyJQM3lEbwvD2zncwrYHjIboR9uPfQXCFEszzKY8
+76UYh6+Unhf86z3lvthItTHx4taqwQsUvCQarQIDAQABAoIBAHF4ea+hYFIyfVt/
+2kZbFEl69KVNU++vJui4uncCe3xd9ICTqjJqWsxIk86aBDBLfX2vhC9DvU5i5k6f
+DbUfSLcshOEdmdpxWJOhClvNi1iD5M0hRj8vePu2jPqwYcY1ubNGnfBiVETP1BC9
+Md3bqH8gVgXITdDSkqfkctg/mwoo0gCvW7J+PWs8Nw5yYZlc9hfMpyNBqAexMX3H
+znrCbqj7S/7IKxlQ1AuNRJnAMrz4pZoFPwcjNv5dHWGBuY3/d3V6oHtdphAyT5Vt
+t5Hxrl/27wQcqrYm6G1/wp7q+6UfvQ7vsuBwaE62wjzodr1KP3KtzrjORz+OElrP
+RHdhW4ECgYEA4PmP6kHLKYW5K6z9TTmQaocTIk7pN71RoxkIZ6eTP7raXhbUTb6o
+fq3bEVjd6K9ZMiSjE/5z0ZHUzlKtjVkZFxQdCQhWzUuxj66zhQV657SUr5s/t+cR
+H04BARya5q5tA799PsDeKz8TzkfkWXbXDL3tOxDgS3KZx3eY3Xu5ucUCgYEAyPX1
+wwBB10pGmzyk4VItGkyH5SsDMA9aKh3tyHI25iuOg7x0VJ1TWXwPXjgtOvqOa9/C
+aww9WuCCK2Hda560eF4iU0a4kua/6OnCSdW6ATn+pmld84LSIXfe4lT0JKst3ast
+NpnCFT5/aeeJVrgr0od9GegjDkRVxz4OJmIDM8kCgYBUp/QsrUdav5QXSEgkyBV8
+0Ik1rsX5kIbovaG5B4jUQWasYyDOhID48kjt9SfDyD/jK4AmJOjGIn8WiGwANVfI
+pGvsmzO2mtYdABtTYeWGzR/qGJxYgl2iDwM3vODZDye8clEZzQ+M7HZyeAEIXTy8
+8bcUM9yC54PQWEOwjD8uFQKBgCzIAnftur5K4uj83pEHSt2taCr9Jryy7xiriq08
+JlesJRneCN5CIKy0JIiOZCXcZ5hKSHyqQZHaracVK84rk3OvJl8AR2kU2ncAgDcL
+1WMolUJoAHOfF0w19gjhfXYeXx4iYvTj1of9YU8sNUKJz9oeLxZy0D0BpUu83FJZ
+TPVhAoGBAMhFV9+VrZJSXaAw0NlZx2k2/Hq2lmUc30UZYXDW8k77qgF3EJHi3ZSl
+PBjN5vmoGcf7d7xRjAIMjsNINPdtzHJCca16lsVRc20qG1RqMiCKcqveExqpMqn1
+oV2vefV/XJtj43/jrlrGfCoI+RNVImsvp4dwKzr7YOI8Fcqf1e3G
+-----END RSA PRIVATE KEY-----
+EOF
+
+    cat << EOF > ~/.ssh/id_rsa.pub
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwmx8/86Vc1yqqplMPkm/w6wB2r5Yl6CjON85Ko5SzPEpnysJwO5ygbMClQTbzCUztIpFeO8D6xdWlhPmhMEJIWtRh+Dx0swB+ByMraGTP92xxKo2ukWzYI6eu25LmJX+a1lmVPmewQq+6dPzIwgCZvwD8UVe5L+d0EP2rb3iniQVoBzksUmhL3N6jp2Lgpscfi1yXFgjFdLpDsCcFcM+Q6wQUC2+qGBYa5RxqercWzISSbvAsYwC7UepmjFpcj3W/WX2QcOCDIlAzeURvC8PbOdzCtgeMhuhH2499BcIUSzPMpjzvpRiHr5SeF/zrPeW+2Ei1MfHi1qrBCxS8JBqt bottlenecks@bottlenecks.opnfv.org
+EOF
+    chmod 600 ~/.ssh/id_rsa
+}
+
+configue_nameserver()
+{
+    echo "Bottlenecks: configue nameserver"
+    sudo rm /etc/resolv.conf
+    sudo echo "nameserver $1" > /etc/resolv.conf
+    sudo echo "nameserver 8.8.8.8" >> /etc/resolv.conf
+    sudo echo "nameserver 8.8.4.4" >> /etc/resolv.conf
+}
+
+install_packages()
+{
+    echo "Bottlenecks: install preinstall packages in VM"
+    sudo apt-get update
+
+    for i in $@; do
+        if ! apt --installed list 2>/dev/null |grep "\<$i\>"
+        then
+            sudo apt-get install -y --force-yes $i
+        fi
+    done
+}
+
index 18eb5c5..6af6152 100644 (file)
@@ -9,3 +9,6 @@ export RUBBOS_RUN_DIR=${RUBBOS_RUN_DIR:-$BOTTLENECKS_REPO_DIR/rubbos/rubbos_scri
 export RUBBOS_EXE_DIR=${RUBBOS_EXE_DIR:-$BOTTLENECKS_REPO_DIR/rubbos/rubbos_scripts/1-1-1/scripts}
 export RUBBOS_APP_TOOLS_URL=${RUBBOS_APP_TOOLS_URL:-$PACKAGE_URL/rubbos/app_tools.tar.gz}
 export RUBBOS_MULINI6_URL=${RUBBOS_MULINI6_URL:-$PACKAGE_URL/rubbos/rubbosMulini6.tar.gz}
+
+export PreInstall_Packages="git gcc gettext g++ libaio1 libaio-dev make"
+
index fa59dc4..52579e0 100755 (executable)
@@ -2,17 +2,46 @@
 
 set -ex
 
+wait_vm_ok() {
+    ip=$1
+
+    retry=0
+    until timeout 1s 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: install preinstall packages in VM"
-    sudo apt-get update
+    echo "Bottlenecks prepare env in VMs"
 
-    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
+    # 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 120
     done
+
+    # asynchronous 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:$SCRIPT_DIR
+          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"
 }
 
 bottlenecks_download_repo()
@@ -21,11 +50,11 @@ bottlenecks_download_repo()
 
     if [ -d $BOTTELENECKS_REPO_DIR/.git ]; then
         cd $BOTTLENECKS_REPO_DIR
-        git pull origin master
+        sudo git pull origin master
         cd -
     else
-        rm -rf $BOTTLENECKS_REPO_DIR
-        git clone $BOTTLENECKS_REPO $BOTTLENECKS_REPO_DIR
+        sudo rm -rf $BOTTLENECKS_REPO_DIR
+        sudo git clone $BOTTLENECKS_REPO $BOTTLENECKS_REPO_DIR
     fi
 }
 
@@ -48,10 +77,10 @@ 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
-    tar zxvf /tmp/app_tools.tar.gz -C $RUBBOS_DIR
+    sudo tar zxvf /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
-    tar zxvf /tmp/rubbosMulini6.tar.gz -C $RUBBOS_MULINI6_DIR
+    sudo tar zxvf /tmp/rubbosMulini6.tar.gz -C $RUBBOS_MULINI6_DIR
     rm -rf /tmp/rubbosMulini6.tar.gz
 }
 
@@ -60,18 +89,19 @@ bottlenecks_rubbos_install_exe()
     echo "Bottlenecks: install and run rubbos"
 
     cd $RUBBOS_RUN_DIR
-    ./run.sh
+    sudo ./run.sh
     cd $RUBBOS_EXE_DIR
-    ./CONTROL_rubbos_exec.sh
+    sudo ./CONTROL_rubbos_exec.sh
 }
 
 main()
 {
-    PreInstall_Packages="git 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/package.conf
     source $SCRIPT_DIR/hosts.conf
+    source $SCRIPT_DIR/common.sh
 
     bottlenecks_prepare_env
     bottlenecks_download_repo
diff --git a/utils/infra_setup/vm_dev_setup/vm_prepare_setup.sh b/utils/infra_setup/vm_dev_setup/vm_prepare_setup.sh
new file mode 100644 (file)
index 0000000..cb7b6df
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bain/bash
+
+main()
+{
+    SCRIPT_DIR=`cd ${BASH_SOURCE[0]%/*};pwd`
+
+    source $SCRIPT_DIR/package.conf
+    source $SCRIPT_DIR/hosts.conf
+    source $SCRIPT_DIR/common.sh
+
+    generate_ssh_key
+    configue_nameserver $nameserver_ip
+    install_packages $PreInstall_Packages
+
+}
+
+main
+
index 0b53d48..e6d06b3 100755 (executable)
@@ -55,7 +55,7 @@ function launch_host_vms() {
     i=0
     for host in $HOSTNAMES; do
         echo "creating vm disk for instance $host" \
-             "ip ${IPADDR_PREFIX}${i}" \
+             "ip ${IPADDR_PREFIX}$((i+11))" \
              "mac ${mac_array[$i]}"
         vm_dir=$host_vm_dir/$host
         mkdir -p $vm_dir