#!/bin/bash set -xe # for now we assume that master ip is 10.0.0.2 and slaves ips are 10.0.0.{3,4,5,...} ADMIN_PASSWORD=vagrant ADMIN_USER=vagrant INSTALL_DIR=/home/vagrant/solar-k8s ENV_NAME=${ENV_NAME:-solar-example} SLAVES_COUNT=${SLAVES_COUNT:-0} if [ "$VLAN_BRIDGE" ]; then CONF_PATH=${CONF_PATH:-utils/jenkins/default30-bridge.yaml} else CONF_PATH=${CONF_PATH:-utils/jenkins/default30.yaml} fi IMAGE_PATH=${IMAGE_PATH:-bootstrap/output-qemu/ubuntu1404} TEST_SCRIPT=${TEST_SCRIPT:-/vagrant/examples/hosts_file/hosts.py} DEPLOY_TIMEOUT=${DEPLOY_TIMEOUT:-60} SOLAR_DB_BACKEND=${SOLAR_DB_BACKEND:-riak} SSH_OPTIONS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PreferredAuthentications=password" dos.py erase ${ENV_NAME} || true mkdir -p tmp mkdir -p logs rm -rf logs/* ENV_NAME=${ENV_NAME} SLAVES_COUNT=${SLAVES_COUNT} IMAGE_PATH=${IMAGE_PATH} CONF_PATH=${CONF_PATH} python utils/jenkins/env.py create_env SLAVE_IPS=`ENV_NAME=${ENV_NAME} python utils/jenkins/env.py get_slaves_ips` ADMIN_IP=`ENV_NAME=${ENV_NAME} python utils/jenkins/env.py get_admin_ip` # Wait for all servers(grep only IP addresses): for IP in `echo ${ADMIN_IP} ${SLAVE_IPS} |grep -oE '((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])'`; do elapsed_time=0 master_wait_time=30 while true; do report=$(sshpass -p ${ADMIN_PASSWORD} ssh ${SSH_OPTIONS} ${ADMIN_USER}@${IP} echo ok || echo not ready) if [ "${report}" = "ok" ]; then break fi if [ "${elapsed_time}" -gt "${master_wait_time}" ]; then exit 2 fi sleep 1 let elapsed_time+=1 done done sshpass -p ${ADMIN_PASSWORD} rsync -rz . -e "ssh ${SSH_OPTIONS}" ${ADMIN_USER}@${ADMIN_IP}:/home/vagrant/solar-k8s --exclude tmp --exclude x-venv --exclude .vagrant --exclude .eggs --exclude *.box --exclude images --exclude utils/packer set +e sshpass -p ${ADMIN_PASSWORD} ssh ${SSH_OPTIONS} ${ADMIN_USER}@${ADMIN_IP} bash -s <>VLAN_IPS bridged_iface=\$(ifconfig -a|awk -v mac="$bridged_iface_mac" '\$0 ~ mac {print \$1}' 'RS=\n\n') sudo ip route del default sudo dhclient "\${bridged_iface}" echo \$(ip addr list |grep ${bridged_iface_mac} -A 1 |grep 'inet ' |cut -d' ' -f6| cut -d/ -f1) EOF done set +x sed -i '/^\s*$/d' VLAN_IPS echo "**************************************" echo "**************************************" echo "**************************************" echo "* VLANs IP addresses" echo "* MASTER IP: `head -n1 VLAN_IPS`" echo "* SLAVES IPS: `tail -n +2 VLAN_IPS | tr '\n' ' '`" echo "* USERNAME: vagrant" echo "* PASSWORD: vagrant" echo "* K8s dashboard: http://`head -n1 VLAN_IPS`/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard" echo "**************************************" echo "**************************************" echo "**************************************" set -x fi # collect logs sshpass -p ${ADMIN_PASSWORD} scp ${SSH_OPTIONS} ${ADMIN_USER}@${ADMIN_IP}:/home/vagrant/solar.log logs/ if [ "${deploy_res}" -eq "0" ] && [ "${DONT_DESTROY_ON_SUCCESS}" != "1" ];then dos.py erase ${ENV_NAME} else if [ "${deploy_res}" -ne "0" ];then dos.py snapshot ${ENV_NAME} ${ENV_NAME}.snapshot dos.py destroy ${ENV_NAME} echo "To revert snapshot please run: dos.py revert ${ENV_NAME} ${ENV_NAME}.snapshot" fi fi exit ${deploy_res}