From e49b6799560843c611f0bd822d0eb0032aace37f Mon Sep 17 00:00:00 2001 From: Simon McCartney Date: Fri, 11 Mar 2016 10:55:47 +0000 Subject: [PATCH] Reworked setup_env.sh to support Debian & Darwin/OSX * Linux/Debian - ensure python-pip & python-dev are installed * LinuxRHEL/CentOS - ensure python-virtualenv & python-devel are installed * Darwin/OSX - check & exit if pip not installed * Always rebuild the venv * Dropped the path on wget, to allow for platform path differences * Dropped the -N on wget, as it has no effect when using -O and github aren't returning the Last-Modified header Change-Id: I221965ee1b1776d46f4b6fba00ffb7069e5b34f8 --- Vagrantfile | 22 ++++++++++++++++++++++ setup_env.sh | 40 ++++++++++++++++++++++++++++++++-------- 2 files changed, 54 insertions(+), 8 deletions(-) create mode 100644 Vagrantfile diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000..433224d --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,22 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# All Vagrant configuration is done below. The "2" in Vagrant.configure +# configures the configuration version (we support older styles for +# backwards compatibility). Please don't change it unless you know what +# you're doing. +Vagrant.configure(2) do |config| + + # vagrant box to sanity check setup_env.sh + config.vm.define :trusty64, autostart: false do |trusty| + trusty.vm.box = "ubuntu/trusty64" + trusty.vm.provision "shell", :inline => "apt-get update -y" + trusty.vm.provision "shell", :inline => "cd /vagrant ; ./setup_env.sh" + end + + # vagrant box to sanity check setup_env.sh + config.vm.define :centos7, autostart: false do |centos| + centos.vm.box = "centos/7" + centos.vm.provision "shell", :inline => "cd /home/vagrant/sync ; ./setup_env.sh" + end +end diff --git a/setup_env.sh b/setup_env.sh index 887eb78..685a3a8 100755 --- a/setup_env.sh +++ b/setup_env.sh @@ -1,21 +1,45 @@ #!/bin/bash +# +# Install python pip & virtualenv packages & then create +# a python virtualenv & install the infra-ansible dependencies in it -# Install virtualenv package if not installed -if [ ! -f /usr/bin/pip ]; then - sudo -E apt-get install python-pip -fi +# check platform prerequisites +case $(uname) in + Linux) + # check if the apt-get executable is available + if hash apt-get 2>/dev/null; then + # check for & install the various packages + hash pip 2>/dev/null || { sudo -E apt-get install -y python-pip; } + [[ -z "$(dpkg -l python-dev | grep '^ii python-dev')" ]] && sudo -E apt-get install -y python-dev + hash virtualenv 2>/dev/null || { sudo pip install virtualenv; } + elif hash yum 2>/dev/null; then + # on RHEL/CentOS, pip is installed during the virtualenv setup + hash virtualenv 2>/dev/null || { sudo -E yum install -y python-virtualenv python-devel gcc gcc-c++; } + hash wget 2>/dev/null || { sudo -E yum install -y wget; } + else + echo "ERROR: Zoinks, I only know about Debian and RHEL" + exit 1 + fi -# Create infra-ansible virtual environment -pip install virtualenv + ;; + Darwin) + hash pip 2>/dev/null || { echo "ERROR: pip isn't installed, please rectify this!" ; exit 1; } + hash virtualenv 2>/dev/null || { sudo pip install virtualenv; } + ;; +esac + + +# Create a fresh infra-ansible virtual environment +[[ -e venv ]] && rm -rf venv virtualenv venv source venv/bin/activate pip install -r requirements.txt # Create inventory folder -if [ ! -d inventory ]; then +if [[ ! -d inventory ]]; then mkdir inventory fi # Install Ansible openstack inventory -/usr/bin/wget -N https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/openstack.py -O inventory/openstack.py +wget https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/openstack.py -O inventory/openstack.py chmod +x inventory/openstack.py