Last active
December 20, 2015 06:59
-
-
Save rui-lin/6090119 to your computer and use it in GitHub Desktop.
Simple vms installation on single node Usage: sudo ./setup.sh <Key> (optionally, pass extra argument for installation type: no-horizon skips horizon plugin, compute-only skips all but compute node related services)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 | |
[ "$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" ) FULL=true;; | |
"no-horizon" ) NO_HORIZON=true;; | |
"compute-only" ) COMPUTE_ONLY=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" | |
PACKAGES="nova-compute-gridcentric" | |
[ $FULL ] || [ $NO_HORIZON ] && PACKAGES="$PACKAGES nova-api-gridcentric cobalt-novaclient" | |
[ $FULL ] && PACKAGES="$PACKAGES horizon-gridcentric" | |
elif [[ "$VERSION" == 2013\.1* ]]; then | |
REPO_TEXT="grizzly" | |
PACKAGES="cobalt-compute" | |
[ $FULL ] || [ $NO_HORIZON ] && PACKAGES="$PACKAGES cobalt-api cobalt-novaclient" | |
[ $FULL ] && PACKAGES="$PACKAGES cobalt-horizon" | |
elif [ -z "$VERSION" ]; then | |
err "Could not find openstack on machine" | |
else | |
err "Unsupported version of openstack: $VERSION"; | |
fi | |
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 | |
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 | |
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://fedora.mirror.nexicom.net/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://fedora.mirror.nexicom.net/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 | |
[gridcentric-cobalt] | |
name=Gridcentric Openstack Extensions | |
baseurl=http://downloads.gridcentriclabs.com/packages/cobalt/$REPO_TEXT/centos/ | |
gpgcheck=1 | |
[gridcentric-vms] | |
name=Gridcentric Virtual Memory Streaming | |
baseurl=http://downloads.gridcentriclabs.com/packages/$GC_KEY/vms/centos/ | |
gpgcheck=1 | |
" >> /etc/yum.repos.d/gridcentric.repo | |
yum install -y kernel-devel-`uname -r` 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