Files
bifrost/scripts/env-setup.sh
stephane 11a1944cfd Fixing virtualenv issues
A couple of issues relating to virtualenv arose while
testing on Ubuntu 15.10. Adjust the virtualenv setting
in the pip install phase to work correctly and simplify
the check and install of virtualenv so we get the right
package.

Change-Id: I09fb604ec6667aa45c3c2063adf3d760114aa65a
2016-02-23 13:46:10 -08:00

146 lines
4.5 KiB
Bash
Executable File

#!/bin/bash
set -eu
ANSIBLE_GIT_URL=${ANSIBLE_GIT_URL:-https://github.com/ansible/ansible.git}
# Note(TheJulia): Normally this should be stable-2.0, pinning due to
# issues with the stable branch.
# https://github.com/ansible/ansible-modules-core/issues/2804
ANSIBLE_GIT_BRANCH=${ANSIBLE_GIT_BRANCH:-v2.0.0.0-1}
function check_get_module () {
local file=${1}
local url=${2}
if [ ! -e ${file} ]; then
wget -O ${file} ${url}
fi
}
if [ -x '/usr/bin/apt-get' ]; then
if ! $(gcc -v &>/dev/null); then
sudo -H apt-get -y install gcc
fi
if ! $(git --version &>/dev/null) ; then
sudo -H apt-get -y install git
fi
if ! $(dpkg -l libpython-dev &>/dev/null); then
sudo -H apt-get -y install libpython-dev
fi
if ! $(dpkg -l wget &>/dev/null); then
sudo -H apt-get -y install wget
fi
if [ -n "${VENV-}" ]; then
if ! $(virtualenv --version &>/dev/null); then
sudo -H apt-get -y install python-virtualenv
fi
fi
elif [ -x '/usr/bin/yum' ]; then
if ! yum -q list installed python-devel; then
sudo -H yum -y install python-devel
fi
if ! $(gcc -v &>/dev/null); then
sudo -H yum -y install gcc
fi
if ! $(git --version &>/dev/null); then
sudo -H yum -y install git
fi
if ! $(wget --version &>/dev/null); then
sudo -H yum -y install wget
fi
if [ -n "${VENV-}" ]; then
if $(virtualenv --version &>/dev/null); then
sudo -H yum -y install python-virtualenv
fi
fi
else
echo "ERROR: Supported package manager not found. Supported: apt,yum"
fi
if [ -n "${VENV-}" ]; then
echo "NOTICE: Using virtualenv for this installation."
if [ ! -f ${VENV}/bin/activate ]; then
# only create venv if one doesn't exist
sudo -H -E virtualenv --no-site-packages ${VENV}
fi
# Note(cinerama): activate is not compatible with "set -u";
# disable it just for this line.
set +u
source ${VENV}/bin/activate
set -u
VIRTUAL_ENV=${VENV}
else
echo "NOTICE: Not using virtualenv for this installation."
fi
# If we're using a venv, we need to work around sudo not
# keeping the path even with -E.
PYTHON=$(which python)
# To install python packages, we need pip.
#
# We can't use the apt packaged version of pip since
# older versions of pip are incompatible with
# requests, one of our indirect dependencies (bug 1459947).
#
# Note(cinerama): We use pip to install an updated pip plus our
# other python requirements. pip breakages can seriously impact us,
# so we've chosen to install/upgrade pip here rather than in
# requirements (which are synced automatically from the global ones)
# so we can quickly and easily adjust version parameters.
# See bug 1536627.
if ! which pip; then
wget -O /tmp/get-pip.py https://bootstrap.pypa.io/get-pip.py
sudo -H -E ${PYTHON} /tmp/get-pip.py
fi
PIP=$(which pip)
sudo -H -E ${PIP} install "pip>6.0"
sudo -H -E ${PIP} install -r "$(dirname $0)/../requirements.txt"
u=$(whoami)
g=$(groups | awk '{print $1}')
if [ ! -d /opt/stack ]; then
mkdir -p /opt/stack || (sudo mkdir -p /opt/stack)
fi
sudo -H chown -R $u:$g /opt/stack
cd /opt/stack
if [ ! -d ansible ]; then
git clone $ANSIBLE_GIT_URL --recursive -b $ANSIBLE_GIT_BRANCH
cd ansible
else
cd ansible
git checkout $ANSIBLE_GIT_BRANCH
git pull --rebase origin $ANSIBLE_GIT_BRANCH
git submodule update --init --recursive
git fetch
fi
# Note(TheJulia): These files should be in the ansible folder
# and this functionality exists for a level of ansible 1.9.x
# backwards compatability although the modules were developed
# for Ansible 2.0.
check_get_module `pwd`/lib/ansible/modules/core/cloud/openstack/os_ironic.py \
https://raw.githubusercontent.com/ansible/ansible-modules-core/stable-2.0/cloud/openstack/os_ironic.py
check_get_module `pwd`/lib/ansible/modules/core/cloud/openstack/os_ironic_node.py \
https://raw.githubusercontent.com/ansible/ansible-modules-core/stable-2.0/cloud/openstack/os_ironic_node.py
if [ -n "${VENV-}" ]; then
sudo -H -E ${PIP} install --upgrade /opt/stack/ansible
echo
echo "To use bifrost, do"
echo "source ${VENV}/bin/activate"
echo "source env-vars"
echo "Then run playbooks as normal."
echo
else
echo
echo "If you're using this script directly, execute the"
echo "following commands to update your shell."
echo
echo "source env-vars"
echo "source /opt/stack/ansible/hacking/env-setup"
echo
fi