Skip to content

Instantly share code, notes, and snippets.

@rui-lin
Last active December 20, 2015 06:59
Show Gist options
  • Save rui-lin/6090119 to your computer and use it in GitHub Desktop.
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)
#!/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