appservers_arr=
dbservers_arr=
all_agents_arr=
+hostname_arr=
+hostip_arr=
# Other variables used in this script
class_nodes=
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" )
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
mkdir -p $local_results_dir
}
+# ssh all vms/instances once only after first creation
+direct_ssh() {
+ sudo 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 cp /home/ubuntu/.ssh/id_rsa /root/.ssh/
+ sudo cp /home/ubuntu/.ssh/config /root/.ssh/
+ local ssh_args="-o StrictHostKeyChecking=no -o BatchMode=yes -i /home/ubuntu/.ssh/id_rsa"
+ i=1
+ while [ $i -lt ${#hostname_arr[@]} ]; do
+ echo ${hostip_arr[$i]}" "${hostname_arr[$i]}
+ if [ ${hostname_arr[$i]} == ${controller_host} ];then
+ let i=i+1
+ continue
+ fi
+ echo ${hostip_arr[$i]}" "${hostname_arr[$i]} >> /etc/hosts
+ ssh ${ssh_args} ubuntu@${hostname_arr[$i]} "echo 'StrictHostKeyChecking no' > /home/ubuntu/.ssh/config"
+ ssh ${ssh_args} ubuntu@${hostname_arr[$i]} "sudo cp /home/ubuntu/.ssh/config /root/.ssh/"
+ scp ${ssh_args} /home/ubuntu/.ssh/id_rsa ubuntu@${hostname_arr[$i]}:/home/ubuntu/.ssh/
+ ssh ${ssh_args} ubuntu@${hostname_arr[$i]} "sudo cp /home/ubuntu/.ssh/id_rsa /root/.ssh/"
+ echo "Append hosts for "${hostname_arr[$i]}
+ ssh ${ssh_args} ubuntu@${hostname_arr[$i]} "sudo cp /etc/hosts /home/ubuntu/ && sudo chmod 646 /home/ubuntu/hosts"
+ j=1
+ while [ $j -lt ${#hostname_arr[@]} ];do
+ local host_item=${hostip_arr[$j]}" "${hostname_arr[$j]}
+ ssh ${ssh_args} ubuntu@${hostname_arr[$i]} "sudo echo ${host_item} >> /home/ubuntu/hosts"
+ let j=j+1
+ done
+ ssh ${ssh_args} ubuntu@${hostname_arr[$i]} "sudo chmod 644 /home/ubuntu/hosts && sudo cp /home/ubuntu/hosts /etc/ && sudo rm -rf /home/ubuntu/hosts"
+ let i=i+1
+ done
+}
+
# inline function
# It requires one local file path which needs to be replaced
_replace_text() {
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() {
read_conf
echo "==> fetch_remote_resources:"
fetch_remote_resources
+ echo "==> direct_ssh:"
+ direct_ssh
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