blob: b4b151f48ba33d773f19bf9e2c8d5417587e10e1 [file] [log] [blame]
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#Variables are in the env_vars.sh file
ENVS=$(dirname $(readlink -f ${BASH_SOURCE[0]}))/env-vars.sh
if [ ! -f ./env-vars.sh ]
then
echo "${ENVS} not found. Please use ${ENVS}.tmpl as a template to create it."
exit 1
fi
. ${ENVS}
#Tell us what ya going to do
echo "Deploying the cluster components:"
echo " Host file: ${HOSTS_FILE:-ERROR: Host file not set}"
echo " Temporary directory: ${TMP_DIR:-ERROR: Temp dir not set}"
echo " Install directory: ${INSTALL_DIR:-ERROR: Install dir not set}"
#Checking versions
if [ -z ${INSTALL_DIR} ] || [ -z ${TMP_DIR} ] || [ -z ${HOSTS_FILE} ]
then
echo "ERROR: Needed variables not set. Did you set the environment files?"
exit 1
fi
#Check directories exit
if [ ! -d ${INSTALL_DIR} ] || [ ! -d ${TMP_DIR} ] || [ ! -f ${HOSTS_FILE} ]
then
echo "ERROR: Needed directories or files don't exist"
exit 1
fi
#Cannot find scripts
if [ ! -d ../scripts ]
then
echo "ERROR: Cannot find scripts directory: ../scripts"
exit 1
fi
#Check space
if [ -e ${INSTALL_DIR} ] && (( $(df -k ${INSTALL_DIR} | awk 'NR==3 {print $3}') < 5000000 ))
then
echo "ERROR: Not enough space (5GB) to install in: ${INSTALL_DIR}."
exit 1
fi
#Check space
if (( $(df -k ${TMP_DIR} | awk 'NR==3 {print $3}') < 3000000 ))
then
echo "ERROR: Not enough tmp space (3GB): ${TMP_DIR}."
exit 1
fi
while true; do
read -p "Continue installing(y/n)? " yn
case $yn in
[Yy]* ) break;;
[Nn]* ) exit;;
* ) echo "Please answer y or n.";;
esac
done
#Put on all hosts
for host in $(cat ${HOSTS_FILE} | grep -v "^#" | tail -n +2 )
do
echo "Deploying to: ${host}"
ssh ${host} "mkdir -p ${INSTALL_DIR};" \
||{ \
echo "WARNING: Cannot create ${INSTALL_DIR} on ${host} Deploy manually."; \
continue;\
}
rsync -avz ${INSTALL_DIR}/* "${host}:${INSTALL_DIR}"
done