Skip to content

Instantly share code, notes, and snippets.

@andreslagarcavilla
Forked from rui-lin/setup.sh
Last active December 21, 2015 17:59
Show Gist options
  • Save andreslagarcavilla/6343936 to your computer and use it in GitHub Desktop.
Save andreslagarcavilla/6343936 to your computer and use it in GitHub Desktop.
#!/bin/bash
function err { echo -e "error.\n$1" && exit 1; }
function usage {
echo "usage: sudo ./setup.sh <key> [full | no-horizon | compute-only]"
echo
echo "Required arguments:"
echo " <key> Gridcentric repository key"
echo
echo "Optional arguments:"
echo " full (Default) All in one installation"
echo " no-horizon Install all but the horizon dashboard extensions"
echo " compute-only Only install compute node services"
echo " api-only Only install API node services"
echo " api-horizon Only install API and Horizon services"
echo
[ "$1" ] && echo "Error: $1" && exit 1 || exit 0
}
# Parse parameters
[ "$1" == "help" ] && usage
[ $# -gt 2 ] && usage "too many arguments"
[ -z "$1" ] && usage "please provide your vms download key"
[ $EUID != 0 ] && usage "script must be run as root"
case "$2" in
"" | "full" ) API=true; COMPUTE=true; HORIZON=true; CLIENT=true;;
"no-horizon" ) API=true; COMPUTE=true;;
"compute-only" ) COMPUTE=true;;
"api-only" ) API=true;;
"api-horizon" ) API=true; HORIZON=true; CLIENT=true;;
*) usage "invalid option: $2";;
esac
GC_KEY=$1
# Validate key
echo -n "Validating key .. "
curl -s --head http://downloads.gridcentriclabs.com/packages/$GC_KEY/ | head -n 1 | grep "HTTP/1.[01] [23].." > /dev/null
if [ $? -ne 0 ]; then err "Invalid key"; fi;
echo "[OK]"
# Detect environment settings
echo -n "Auto-detecting settings .. "
# Determine apt or yum distro
PKG_MANAGER=$( command -v yum || command -v apt-get ) || err "Could not find package manager apt-get or yum."
PKG_MANAGER=`basename $PKG_MANAGER`
# Auto determine openstack version
VERSION=`nova-manage version` 2> /dev/null
if [[ "$VERSION" == 2012\.2* ]]; then
REPO_TEXT="folsom"
[ $COMPUTE ] && PACKAGES="nova-compute-gridcentric"
[ $API ] && PACKAGES="$PACKAGES nova-api-gridcentric"
[ $HORIZON ] && PACKAGES="$PACKAGES horizon-gridcentric"
elif [[ "$VERSION" == 2013\.1* ]]; then
REPO_TEXT="grizzly"
[ $COMPUTE ] && PACKAGES="cobalt-compute"
[ $API ] && PACKAGES="$PACKAGES cobalt-api"
[ $HORIZON ] && PACKAGES="$PACKAGES cobalt-horizon"
elif [ -z "$VERSION" ]; then
err "Could not find openstack on machine"
else
err "Unsupported version of openstack: $VERSION";
fi
[ $CLIENT ] && PACKAGES="$PACKAGES cobalt-novaclient"
[ $COMPUTE ] && PACKAGES="$PACKAGES vms vms-kvm vms-libvirt vms-mcdist vmsfs vms-rados"
echo "[OK]"
echo "Environment: `uname -s` `uname -r`, $PKG_MANAGER, openstack $REPO_TEXT"
# Installation. Ask for confirm only if in interactive terminal
[ -t 0 ] && read -p "Press [Enter] to begin installation"
if [ $PKG_MANAGER == "apt-get" ]; then
wget -O - http://downloads.gridcentriclabs.com/packages/gridcentric.key | sudo apt-key add -
echo deb http://downloads.gridcentriclabs.com/packages/cobaltclient/$REPO_TEXT/ubuntu/ gridcentric multiverse >> /etc/apt/sources.list.d/gridcentric.list
echo deb http://downloads.gridcentriclabs.com/packages/cobalt/$REPO_TEXT/ubuntu/ gridcentric multiverse >> /etc/apt/sources.list.d/gridcentric.list
echo deb http://downloads.gridcentriclabs.com/packages/$GC_KEY/vms/ubuntu/ gridcentric multiverse >> /etc/apt/sources.list.d/gridcentric.list
apt-get update
[ $COMPUTE ] && apt-get install -y linux-headers-`uname -r` vms-apparmor
apt-get install -y $PACKAGES
elif [ $PKG_MANAGER == "yum" ]; then
if ! rpm -qa | grep -q epel-release; then
echo "Installing required EPEL repository..."
OS_VER=`cat /etc/redhat-release 2> /dev/null | awk '{print $3}'`
[ "$OS_VER" ] || OS_VER=`cat /etc/centos-release 2> /dev/null | awk '{print $3}'`
if [[ $OS_VER == 6* ]]; then
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/`uname -m`/epel-release-6-8.noarch.rpm
rpm --import https://fedoraproject.org/static/0608B895.txt
elif [[ $OS_VER == 5* ]]; then
rpm -ivh http://dl.fedoraproject.org/pub/epel/5/`uname -m`/epel-release-5-4.noarch.rpm
rpm --import https://fedoraproject.org/static/217521F6.txt
fi
if ! rpm -qa | grep -q epel-release; then
err "Please manually enable the EPEL repository."
fi
echo "Continuing vms installation..."
fi
rpm --import http://downloads.gridcentriclabs.com/packages/gridcentric.key
echo "\
[gridcentric-cobaltclient]
name=Cobalt Extension for novaclient
baseurl=http://downloads.gridcentriclabs.com/packages/cobaltclient/$REPO_TEXT/centos/
gpgcheck=1
enabled=1
[gridcentric-cobalt]
name=Gridcentric Openstack Extensions
baseurl=http://downloads.gridcentriclabs.com/packages/cobalt/$REPO_TEXT/centos/
gpgcheck=1
enabled=1
[gridcentric-vms]
name=Gridcentric Virtual Memory Streaming
baseurl=http://downloads.gridcentriclabs.com/packages/$GC_KEY/vms/centos/
gpgcheck=1
enabled=1
" >> /etc/yum.repos.d/gridcentric.repo
[ $COMPUTE ] && yum install -y kernel-devel-`uname -r`
PACKAGES="$PACKAGES vms-selinux"
yum install -y $PACKAGES
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment