From b57d2ac822c2d706524c513f6e2baff19301fa05 Mon Sep 17 00:00:00 2001 From: QiLiang Date: Mon, 4 Jan 2016 03:59:06 +0000 Subject: Update vm prepare setup add nameserver, ssh-key configure and package install JIRA: BOTTLENECK-33 Change-Id: I66dca9d2367f85bc353ce159689028be97a3b78d Signed-off-by: QiLiang --- .../heat_template/HOT_create_instance.sh | 4 ++ utils/infra_setup/vm_dev_setup/common.sh | 65 ++++++++++++++++++++++ utils/infra_setup/vm_dev_setup/package.conf | 3 + utils/infra_setup/vm_dev_setup/setup_env.sh | 60 +++++++++++++++----- utils/infra_setup/vm_dev_setup/vm_prepare_setup.sh | 18 ++++++ utils/rubbos_dev_env_setup/deploy.sh | 2 +- 6 files changed, 136 insertions(+), 16 deletions(-) create mode 100644 utils/infra_setup/vm_dev_setup/common.sh create mode 100644 utils/infra_setup/vm_dev_setup/vm_prepare_setup.sh diff --git a/utils/infra_setup/heat_template/HOT_create_instance.sh b/utils/infra_setup/heat_template/HOT_create_instance.sh index 8ca54b06..ecb9ab80 100755 --- a/utils/infra_setup/heat_template/HOT_create_instance.sh +++ b/utils/infra_setup/heat_template/HOT_create_instance.sh @@ -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 index 00000000..625a447e --- /dev/null +++ b/utils/infra_setup/vm_dev_setup/common.sh @@ -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 +} + diff --git a/utils/infra_setup/vm_dev_setup/package.conf b/utils/infra_setup/vm_dev_setup/package.conf index 18eb5c56..6af6152b 100644 --- a/utils/infra_setup/vm_dev_setup/package.conf +++ b/utils/infra_setup/vm_dev_setup/package.conf @@ -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" + diff --git a/utils/infra_setup/vm_dev_setup/setup_env.sh b/utils/infra_setup/vm_dev_setup/setup_env.sh index fa59dc47..52579e0d 100755 --- a/utils/infra_setup/vm_dev_setup/setup_env.sh +++ b/utils/infra_setup/vm_dev_setup/setup_env.sh @@ -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 index 00000000..cb7b6dfd --- /dev/null +++ b/utils/infra_setup/vm_dev_setup/vm_prepare_setup.sh @@ -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 + diff --git a/utils/rubbos_dev_env_setup/deploy.sh b/utils/rubbos_dev_env_setup/deploy.sh index 0b53d48b..e6d06b35 100755 --- a/utils/rubbos_dev_env_setup/deploy.sh +++ b/utils/rubbos_dev_env_setup/deploy.sh @@ -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 -- cgit 1.2.3-korg