X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=testsuites%2Frubbos%2Fpuppet_manifests%2Finternal%2Frun_rubbos_internal.sh;h=ae67b85809b5307c62766fe54bead963319f99ee;hb=15fdbb67072e1973a5fca27ee4663745be2c2f96;hp=12dc17a6d6aa62cc384081a75f1c7cfcb0463145;hpb=f9fcb20414b8001cdee9476463c155b2f28d270c;p=bottlenecks.git diff --git a/testsuites/rubbos/puppet_manifests/internal/run_rubbos_internal.sh b/testsuites/rubbos/puppet_manifests/internal/run_rubbos_internal.sh index 12dc17a6..ae67b858 100755 --- a/testsuites/rubbos/puppet_manifests/internal/run_rubbos_internal.sh +++ b/testsuites/rubbos/puppet_manifests/internal/run_rubbos_internal.sh @@ -19,12 +19,15 @@ local_cfg_path=$1 local_results_dir=$2 controller_host=`hostname` -REMOTE_GIT_REPO=git://git.opnfv.org/bottlenecks +#REMOTE_GIT_REPO=git://git.opnfv.org/bottlenecks +REMOTE_GIT_REPO=https://gerrit.opnfv.org/gerrit/bottlenecks REMOTE_ARTIFACTS_REPO=http://artifacts.opnfv.org/bottlenecks/rubbos/rubbos_files.tar.gz -LOCAL_GIT_REPO=/btnks-git -LOCAL_ARTIFACTS_REPO=/btnks-artifacts -LOCAL_RUBBOS_MANIFESTS_HOME=/btnks-git/bottlenecks/testsuites/rubbos/puppet_manifests -LOCAL_ARTIFACTS_RUBBOS_HOME=/btnks-artifacts/rubbos_files +LOCAL_GIT_REPO=/home/ubuntu/btnks-git +LOCAL_ARTIFACTS_REPO=/home/ubuntu/btnks-artifacts +LOCAL_RUBBOS_MANIFESTS_HOME=/home/ubuntu/btnks-git/bottlenecks/testsuites/rubbos/puppet_manifests +LOCAL_ARTIFACTS_RUBBOS_HOME=/home/ubuntu/btnks-artifacts/rubbos_files + +SSH_ARGS="-o StrictHostKeyChecking=no -o BatchMode=yes -i /home/ubuntu/.ssh/id_rsa" # conf properties from the input config file client_servers= @@ -50,6 +53,8 @@ webservers_arr= appservers_arr= dbservers_arr= all_agents_arr= +hostname_arr= +hostip_arr= # Other variables used in this script class_nodes= @@ -60,16 +65,53 @@ read_conf() { if [ ${#line} -gt 0 ] && [ ${line:0:1} != "#" ] && [ ${line:0:1} != "[" ];then line=(${line//=/ }) case ${line[0]} in + "controller" ) + e_arr=(${line[1]//:/ }) + controller_host=${e_arr[0]} + controller_ip=${e_arr[2]} + hostname_arr=("${hostname_arr[@]}" "${e_arr[0]}") + hostip_arr=("${hostip_arr[@]}" "${e_arr[2]}");; "client_servers" ) - client_servers=${line[1]};; + elems=(${line[1]//,/ }) + for e in "${elems[@]}";do + e_arr=(${e//:/ }) + client_servers=${client_servers}${e_arr[0]}"," + hostname_arr=("${hostname_arr[@]}" "${e_arr[0]}") + hostip_arr=("${hostip_arr[@]}" "${e_arr[1]}") + done + client_servers=${client_servers%,};; "web_servers" ) - web_servers=${line[1]};; + e_arr=(${line[1]//:/ }) + web_servers=${web_servers}${e_arr[0]}"," + hostname_arr=("${hostname_arr[@]}" "${e_arr[0]}") + hostip_arr=("${hostip_arr[@]}" "${e_arr[1]}") + web_servers=${e_arr[0]};; "app_servers" ) - app_servers=${line[1]};; + elems=(${line[1]//,/ }) + for e in "${elems[@]}";do + e_arr=(${e//:/ }) + app_servers=${app_servers}${e_arr[0]}"," + hostname_arr=("${hostname_arr[@]}" "${e_arr[0]}") + hostip_arr=("${hostip_arr[@]}" "${e_arr[1]}") + done + app_servers=${app_servers%,};; "cjdbc_controller" ) - cjdbc_controller=${line[1]};; - "database_servers" ) - database_servers=${line[1]};; + if [ "x"${line[1]} != "x" ]; then + e_arr=(${line[1]//:/ }) + hostname_arr=("${hostname_arr[@]}" "${e_arr[0]}") + hostip_arr=("${hostip_arr[@]}" "${e_arr[1]}") + cjdbc_controller=${e_arr[0]} + fi + ;; + "db_servers" ) + elems=(${line[1]//,/ }) + for e in "${elems[@]}";do + e_arr=(${e//:/ }) + database_servers=${database_servers}${e_arr[0]}"," + hostname_arr=("${hostname_arr[@]}" "${e_arr[0]}") + hostip_arr=("${hostip_arr[@]}" "${e_arr[1]}") + done + database_servers=${database_servers%,};; "database_port" ) database_port=${line[1]};; "db_username" ) @@ -102,6 +144,11 @@ read_conf() { fi echo "-------------Main conf info:----------" + i=1 + while [ $i -lt ${#hostname_arr[@]} ]; do + echo ${hostip_arr[$i]}" "${hostname_arr[$i]} + let i=i+1 + done echo "clients_arr: "${clients_arr[@]} echo "bench_client: "$bench_client echo "remote_client_servers: "$remote_client_servers @@ -118,6 +165,7 @@ fetch_remote_resources() { rm -rf $LOCAL_GIT_REPO fi mkdir -p $LOCAL_GIT_REPO + sudo dpkg --configure -a sudo apt-get install -y git cd $LOCAL_GIT_REPO git clone ${REMOTE_GIT_REPO} @@ -127,7 +175,7 @@ fetch_remote_resources() { fi mkdir -p $LOCAL_ARTIFACTS_REPO cd $LOCAL_ARTIFACTS_REPO - wget ${REMOTE_ARTIFACTS_REPO} + wget -nv ${REMOTE_ARTIFACTS_REPO} tar xvzf rubbos_files.tar.gz if [ -d $local_results_dir ];then @@ -136,6 +184,68 @@ fetch_remote_resources() { mkdir -p $local_results_dir } +# ssh all vms/instances once only after first creation +direct_ssh() { + echo "127.0.0.1 $(hostname)" >> /etc/hosts + echo "write hosts file: 127.0.0.1 $(hostname)" + cp ${LOCAL_GIT_REPO}/bottlenecks/utils/infra_setup/bottlenecks_key/bottlenecks_key /home/ubuntu/.ssh/id_rsa + sudo chmod 0600 /home/ubuntu/.ssh/id_rsa + echo 'StrictHostKeyChecking no' > /home/ubuntu/.ssh/config + sudo chown -R ubuntu:ubuntu /home/ubuntu/.ssh + i=1 + while [ $i -lt ${#hostip_arr[@]} ]; do + echo ${hostip_arr[$i]}" "${hostname_arr[$i]} >> /etc/hosts + let i=i+1 + done + echo "Done controller." + + i=1 + while [ $i -lt ${#hostip_arr[@]} ]; do + if [ ${hostname_arr[$i]} == ${controller_host} ];then + let i=i+1 + continue + fi + echo "Processing: "${hostip_arr[$i]}" "${hostname_arr[$i]} + echo "ssh *sudo hostname* test:" + ssh ${SSH_ARGS} ubuntu@${hostip_arr[$i]} "sudo hostname" + + ssh ${SSH_ARGS} ubuntu@${hostip_arr[$i]} "sudo cp /etc/hosts /home/ubuntu/ && sudo chmod 646 /home/ubuntu/hosts" + ssh ${SSH_ARGS} ubuntu@${hostip_arr[$i]} "echo 127.0.0.1 ${hostname_arr[$i]} >> /home/ubuntu/hosts" + j=1 + while [ $j -lt ${#hostip_arr[@]} ];do + local host_item=${hostip_arr[$j]}" "${hostname_arr[$j]} + ssh ${SSH_ARGS} ubuntu@${hostip_arr[$i]} "echo ${host_item} >> /home/ubuntu/hosts" + let j=j+1 + done + ssh ${SSH_ARGS} ubuntu@${hostip_arr[$i]} "sudo chmod 644 /home/ubuntu/hosts && sudo cp /home/ubuntu/hosts /etc/ && sudo rm -rf /home/ubuntu/hosts" + echo "done hosts" + + sudo ssh ${SSH_ARGS} ubuntu@${hostip_arr[$i]} "echo 'StrictHostKeyChecking no' > /home/ubuntu/.ssh/config" + sudo scp ${SSH_ARGS} /home/ubuntu/.ssh/id_rsa ubuntu@${hostip_arr[$i]}:/home/ubuntu/.ssh/ + + let i=i+1 + done +} + +start_puppet_service() { + # Start puppetserver + sudo service puppetserver stop + sudo service puppetserver start + sudo service puppetserver status + # Start all puppet agents + for host in "${all_agents_arr[@]}";do + echo "start puppet agent on:"${host} + ssh ${SSH_ARGS} ubuntu@${host} "sudo service puppet status" + ssh ${SSH_ARGS} ubuntu@${host} "sudo service puppet stop" + ssh ${SSH_ARGS} ubuntu@${host} "sudo service puppet start --no-client" + ssh ${SSH_ARGS} ubuntu@${host} "sudo service puppet status" + done + + sudo puppet cert list --all + sudo puppet cert sign --all + sudo puppet cert list --all +} + # inline function # It requires one local file path which needs to be replaced _replace_text() { @@ -185,30 +295,17 @@ _to_puppet_class_nodes() { # inline function _execute_catalog() { - # use *class_nodes* to receive return vale - _to_puppet_class_nodes ${client_servers} - sed -i 's/REPLACED_CLIENT_NODES/'${class_nodes}'/g' /etc/puppet/manifests/site.pp - - _to_puppet_class_nodes ${web_servers} - sed -i 's/REPLACED_HTTPD_NODES/'${class_nodes}'/g' /etc/puppet/manifests/site.pp - - _to_puppet_class_nodes ${app_servers} - sed -i 's/REPLACED_TOMCAT_NODES/'${class_nodes}'/g' /etc/puppet/manifests/site.pp - - _to_puppet_class_nodes ${database_servers} - sed -i 's/REPLACED_MYSQL_NODES/'${class_nodes}'/g' /etc/puppet/manifests/site.pp - for host in "${clients_arr[@]}"; do - ssh ubuntu@${host} 'sudo puppet agent -t' & + ssh ${SSH_ARGS} ubuntu@${host} 'sudo puppet agent -t' & done for host in "${webservers_arr[@]}"; do - ssh ubuntu@${host} 'sudo puppet agent -t' + ssh ${SSH_ARGS} ubuntu@${host} 'sudo puppet agent -t' done for host in "${appservers_arr[@]}"; do - ssh ubuntu@${host} 'sudo puppet agent -t' + ssh ${SSH_ARGS} ubuntu@${host} 'sudo puppet agent -t' done for host in "${dbservers_arr[@]}"; do - ssh ubuntu@${host} 'sudo puppet agent -t' + ssh ${SSH_ARGS} ubuntu@${host} 'sudo puppet agent -t' done } @@ -232,39 +329,40 @@ prepare_manifests() { execute_catalog() { # start all (exec catalog) - echo "--> Cleanup all agents..." - sudo cp ${LOCAL_RUBBOS_MANIFESTS_HOME}/site_off.pp /etc/puppet/manifests/site.pp - _execute_catalog - - sleep 3s - - echo "--> Start to execute catalogs in all agents..." - sudo cp ${LOCAL_RUBBOS_MANIFESTS_HOME}/site_on.pp /etc/puppet/manifests/site.pp - _execute_catalog - echo "--> Finish to execute catalogs in all agents." + if [ "x"$1 == "xstart" ];then + echo "--> Start to execute catalogs in all agents..." + sudo cp ${LOCAL_RUBBOS_MANIFESTS_HOME}/site_on.pp /etc/puppet/manifests/site.pp + _execute_catalog + echo "--> Finish to execute catalogs in all agents." + elif [ "x"$1 == "xclean" ];then + echo "--> Cleanup all agents..." + sudo cp ${LOCAL_RUBBOS_MANIFESTS_HOME}/site_off.pp /etc/puppet/manifests/site.pp + _execute_catalog + echo "--> Finish to cleanup all agents." + fi } run_emulator() { # prepare data in db servers for host in "${dbservers_arr[@]}"; do - ssh ubuntu@${host} 'sudo scp ubuntu@'${controller_host}':/etc/puppet/modules/rubbos_mysql/files/rubbos_data_sql.tar.gz '${rubbos_home}'' - ssh ubuntu@${host} 'cd '${rubbos_home}' && sudo ./prepare_rubbos_mysql_db.sh ./rubbos_data_sql.tar.gz ./rubbos_data_sql_dir' + ssh ${SSH_ARGS} ubuntu@${host} 'sudo scp ubuntu@'${controller_host}':/etc/puppet/modules/rubbos_mysql/files/rubbos_data_sql.tar.gz '${rubbos_home}'' + ssh ${SSH_ARGS} ubuntu@${host} 'cd '${rubbos_home}' && sudo ./prepare_rubbos_mysql_db.sh ./rubbos_data_sql.tar.gz ./rubbos_data_sql_dir' done # run emulator.sh ( Modify rubbos.properties file first) - ssh ubuntu@${bench_client} 'sudo rm -rf '${rubbos_home}'/bench/bench' + ssh ${SSH_ARGS} ubuntu@${bench_client} 'sudo rm -rf '${rubbos_home}'/bench/bench' for x in "${clients_per_node_arr[@]}";do echo "run emulator with clients_per_node="$x for host in "${clients_arr[@]}";do - ssh ubuntu@${host} "sed -e 's/REPLACED_NUMBER_OF_CLIENTS_PER_NODE/'${x}'/g' '${rubbos_home}'/Client/rubbos.properties.template > '${rubbos_home}'/Client/rubbos.properties " + ssh ${SSH_ARGS} ubuntu@${host} "sed -e 's/REPLACED_NUMBER_OF_CLIENTS_PER_NODE/'${x}'/g' '${rubbos_home}'/Client/rubbos.properties.template > '${rubbos_home}'/Client/rubbos.properties " done - ssh ubuntu@${bench_client} 'cd '${rubbos_home}'/bench && ./run_emulator.sh' + ssh ${SSH_ARGS} ubuntu@${bench_client} 'cd '${rubbos_home}'/bench && ./run_emulator.sh' done } collect_results() { # collect results, from bench_host to controller - scp -r ubuntu@${bench_client}:${rubbos_home}/bench/bench/* ${local_results_dir} + scp ${SSH_ARGS} -r ubuntu@${bench_client}:${rubbos_home}/bench/bench/* ${local_results_dir} } process_results() { @@ -281,16 +379,22 @@ main() { read_conf echo "==> fetch_remote_resources:" fetch_remote_resources + echo "==> direct_ssh:" + direct_ssh + echo "==> start_puppet_service:" + start_puppet_service echo "==> prepare_manifests:" prepare_manifests - echo "==> execute_catalog:" - execute_catalog + echo "==> execute_catalog start:" + execute_catalog start echo "==> run_emulator:" run_emulator echo "==> collect_results (to controller:${local_results_dir}):" collect_results echo "==> process_results:" process_results + echo "==> execute_catalog clean:" + execute_catalog clean } main