valence/install_valence.sh
Nate Potter 11c8f513cb Install and configure etcd in install script
This patch adds logic to install_valence.sh to install
and add initial directories to the ectd database when
running valence_install.sh

Change-Id: Iec4e1fff16ae3a92163f026ee231be09fcbb0865
Closes-Bug: #1668438
2017-03-02 14:53:04 -08:00

90 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
#title :install_valence.sh
#description :This script will install valence package and deploys conf files
#author :Intel Corporation
#date :17-10-2016
#version :0.1
#usage :sudo -E bash install_valence.sh
#notes :Run this script as sudo user and not as root.
# This script is needed still valence is packaged in to .deb/.rpm
#==============================================================================
install_log=install_valence.log
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
CURR_USER="$(whoami)"
cd "$DIR"
echo "Current directory: $DIR" >> $install_log
if [ "$CURR_USER" != 'root' ]; then
echo "You must be root to install."
exit
fi
PYHOME="/usr/local/bin"
echo "Detected PYTHON HOME: $PYHOME" >> $install_log
# Copy the config files
echo "Setting up valence config" >> $install_log
sed "s/\${CHUID}/$CURR_USER/" "$DIR"/doc/source/init/valence.conf > /tmp/valence.conf
# Use alternate sed delimiter because path will have /
sed -i "s#PYHOME#$PYHOME#" /tmp/valence.conf
mv /tmp/valence.conf /etc/init/valence.conf
# create conf directory for valence if it doesn't exist
if [ ! -d "/etc/valence" ]; then
mkdir /etc/valence
fi
chown "$CURR_USER":"$CURR_USER" /etc/valence
cp etc/valence/valence.conf.sample /etc/valence/valence.conf
# create log directory for valence if it doesn't exist
if [ ! -d "/var/log/valence" ]; then
mkdir /var/log/valence
fi
chown "$CURR_USER":"$CURR_USER" /var/log/valence
echo "Installing dependencies from requirements.txt" >> $install_log
pip install -r requirements.txt
echo "Installing the etcd database" >> $install_log
ETCD_VER=v3.1.2
DOWNLOAD_URL=https://github.com/coreos/etcd/releases/download
curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
mkdir -p /var/etcd && tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /var/etcd --strip-components=1
chown "$CURR_USER":"$CURR_USER" /var/etcd
mv /var/etcd/etcd /usr/local/bin/etcd && mv /var/etcd/etcdctl /usr/local/bin/etcdctl
sed "s/\${CHUID}/$CURR_USER/" "$DIR"/doc/source/init/etcd.conf > /etc/init/etcd.conf
echo "Starting etcd database" >> $install_log
service etcd start
sleep 2
timeout=30
attempt=1
until [[ $(service etcd status) = "etcd start/running"* ]]
do
sleep 1
attempt=$((attempt+1))
if [[ $attempt -eq timeout ]]
then
echo "Database failed to start, aborting installation."
rm -rf /var/etcd /usr/local/bin/etcd /usr/local/bin/etcdctl
exit
fi
done
echo "Adding database directories" >> $install_log
etcdctl --endpoints=127.0.0.1:2379 mkdir /nodes
etcdctl --endpoints=127.0.0.1:2379 mkdir /flavors
etcdctl --endpoints=127.0.0.1:2379 mkdir /pod_managers
echo "Invoking setup.py" >> $install_log
python setup.py install
if [ $? -ne 0 ]; then
echo "ERROR: setup.py failed. Please check $install_log for details.
Please fix the error and retry."
exit
fi
echo "Installation Completed"
echo "To start valence : sudo service valence start"